NYOJ Problem of IP

Problem of IP

时间限制:1000 ms  |  内存限制:65535 KB

难度:2

描述
众所周知,计算机只能识别二进制数据,而我们却习惯十进制。所以人们发明了点分十进制来表示IP地址。即用以点分开的四个十进制数表示32位的二进制IP地址,每个数字代表IP地址中的8位。现在需要你编写程序实现二者之间的转换。

输入
输入包含多组测试数据。每组一行或为32位01字符串,或为一个点分十进制字符串。
输出
对于每一组输入,输出包含一行,为对应的另一种格式的IP地址
样例输入
00000000000000000000000000000000
255.255.255.255 
样例输出
0.0.0.0
11111111111111111111111111111111
来源

郑大第六届校赛

#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
int ar[10];
void count(int n){
	int k=0,e=1;
	for(int j=n-1;j>=0;--j){
		k+=ar[j]*e;e=e*10;
	}
	int ip[10],i=0;
	memset(ip,0,sizeof(ip));
	while(k){
		ip[i++]=k%2;
		k=k/2;
	}
	for(i=7;i>=0;--i)
	printf("%d",ip[i]);
}
int main()
{
	int d,i,j,n,l,k;
	char s[35];
	while(scanf("%s",s)!=EOF){
		l=strlen(s);n=0;
		if(strchr(s,'.')){
			for(i=0;i<l;++i){
				if(s[i]=='.'){
					count(n);
					memset(ar,0,sizeof(ar));
					n=0;continue;
				}
				ar[n++]=s[i]-'0';
			}
			count(n);
			printf("\n");
		}
		else {
			d=0;k=128;
			for(i=0;i<l;++i){
				n+=(s[i]-'0')*k;k/=2;d++;
				if(d==8){
					if(i==l-1){
						printf("%d",n);continue;
					}
					printf("%d.",n);
					n=0;k=128;d=0;
				}
			}
			printf("\n");
		}
	}
	return 0;
}
时间: 2024-11-05 17:24:22

NYOJ Problem of IP的相关文章

NYOJ 630 Problem of IP

Problem of IP 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 众所周知,计算机只能识别二进制数据,而我们却习惯十进制.所以人们发明了点分十进制来表示IP地址.即用以点分开的四个十进制数表示32位的二进制IP地址,每个数字代表IP地址中的8位.现在需要你编写程序实现二者之间的转换. 输入 输入包含多组测试数据.每组一行或为32位01字符串,或为一个点分十进制字符串. 输出 对于每一组输入,输出包含一行,为对应的另一种格式的IP地址 样例输入 000000

ping程序 &nbsp; 源代码

cat ping.c  /*  * Copyright (c) 1989 The Regents of the University of California.  * All rights reserved.  *  * This code is derived from software contributed to Berkeley by  * Mike Muuss.  *  * Redistribution and use in source and binary forms, with

NYOJ 179 LK&#39;s problem (排序模拟)

链接:click here~~ 题意: 描述 LK has a question.Coule you help her? It is the beginning of the day at a bank, and a crowd  of clients is already waiting for the entrance door to  open. Once the bank opens, no more clients arrive, and  tellerCount tellers be

NYOJ 698 A Coin Problem (斐波那契)

链接:click here 题意: 描述 One day,Jiameier is tidying up the room,and find some coins. Then she throws the coin to play.Suddenly,she thinks of a problem ,that if throw n times coin ,how many situations of no-continuous up of the coin. Hey,Let's solve the

NYOJ 707 A Simple Problem(结构体排序) 睡前一水~~

链接:click here 题意: A Simple Problem 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 You know, just as the title imply, this is a simple problem. In a contest, given the team-id, solved, penalty of all the teams, tell me the champion.If the numbers of solved pr

nyoj 513 A+B Problem IV 【Java大数】

这道题有点小坑.. 特殊数据 输入 0.0 0.0 输出 0 代码: import java.util.Scanner; import java.math.*; public class Main{ public static void main(String[] args){ Scanner cin = new Scanner(System.in); BigDecimal a, b, temp; temp = new BigDecimal("0.0"); while(cin.hasN

nyoj 803 A/B Problem 【Java大数】

 先用字符串将字符串接收,然后在用BigInteger就好了 代码: import java.util.Scanner; import java.math.*; public class Main{ public static void main(String[] args){ Scanner cin = new Scanner(System.in); while(cin.hasNextBigInteger()){ BigInteger aa, bb; //a = cin.nextBigDeci

nyoj 1235 A/B Problem

A/B Problem 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 已知: 1. n = (A % 9973); 2. gcd(B, 9973) = 1; 计算: (A / B) % 9973 输入 数据的第一行是一个T,表示有T组数据.每组数据有两个数n(0 <= n < 9973)和B(1 <= B <= 10^9). 输出 对应每组数据输出(A / B) % 9973. 样例输入 2 1000 53 87 123456789 样例输出 792

NYOJ A-B Problem

A-B Problem 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 A+B问题早已经被大家所熟知了,是不是很无聊呢?现在大家来做一下A-B吧. 现在有两个实数A和B,聪明的你,能不能判断出A-B的值是否等于0呢? 输入 有多组测试数据.每组数据包括两行,分别代表A和B. 它们的位数小于100,且每个数字前中可能包含+,- 号. 每个数字前面和后面都可能有多余的0. 每组测试数据后有一空行. 输出 对于每组数据,输出一行. 如果A-B=0,输出YES,否则输出NO