POJ 2105 IP Address (strtoll函数)2014-07-30 csdn博客 synapse7Time Limit: 1000MSMemory Limit: 30000KDescriptionSuppose you are reading byte streams from any device, representing IP addresses. Your task is to convert a 32 characters long sequence of "1s" and "0s" (bits) to a dotted decimal format. A dotted decimal format for an IP address is form by grouping 8 bits at a time and converting the binary representation to decimal representation. Any 8 bits is a valid part of an IP address. To convert binary numbers to decimal numbers remember that both are positional numerical systems, where the first 8 positions of the binary systems are:
27 26252423 222120 128 6432168 4 2 1
InputThe input will have a number N (1<=N<=9) in its first line representing the number of streams to convert. N lines will follow.OutputThe output must have N lines with a doted decimal IP address. A dotted decimal IP address is formed by grouping 8 bit at the time and converting the binary representation to decimal representation.Sample Input
400000000000000000000000000000000 00000011100000001111111111111111 11001011100001001110010110000000 01010000000100000000000000000001
Sample Output
0.0.0.03.128.255.255203.132.229.12880.16.0.1
SourceMéxico and Central America 2004这题可以直接算,也可以用一个cstdlib中的strtoll函数搞定完整代码:
/*0ms,408KB*/#include<cstdio>#include<cstdlib>char str[40];int ip[4];int main(){char* stopstr;__int64 num;int t, i;scanf("%d
", &t);while (t--){gets(str);num = strtoll(str, &stopstr, 2);for (i = 3; i >= 0; --i){ip[i] = num % 256;num >>= 8;}printf("%d.%d.%d.%d
", ip[0], ip[1], ip[2], ip[3]);}return 0;}