poj2105,

## Problem:

 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 14026 Accepted: 8022
Description
Suppose 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   26  25  24  23   22  21  20

128 64  32  16  8   4   2   1 ```
Input
The input will have a number N (1<=N<=9) in its first line representing the number of streams to convert. N lines will follow.
Output
The 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
```4
00000000000000000000000000000000
00000011100000001111111111111111
11001011100001001110010110000000
01010000000100000000000000000001 ```
Sample Output
```0.0.0.0
3.128.255.255
203.132.229.128
80.16.0.1```
Source
México and Central America 2004

## Solution:

Just straight forward translate the binary to decimal numbers.

## Source Code:

//Wed Apr 14 13:26:22 CDT 2010
#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <string>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>

using namespace std;

int main(int argc, const char* argv[])
{
freopen("input.in", "r", stdin);
freopen("output.out", "w", stdout);
int N;
while (cin >> N)
{
for (int i = 0; i < N; i++)
{
string str;
cin >> str;
int a = 0;
int b = 0;
int c = 0;
int d = 0;
for (int idx = 0; idx < 8; idx++)
{
a = a * 2 + str[idx] - '0';
}
for (int idx = 8; idx < 16; idx++)
{
b = b * 2 + str[idx] - '0';
}
for (int idx = 16; idx < 24; idx++)
{
c = c * 2 + str[idx] - '0';
}
for (int idx = 24; idx < 32; idx++)
{
d = d * 2 + str[idx] - '0';
}
cout << a << "." << b << "." << c << "." << d << endl;
}
}
fclose(stdin);
fclose(stdout);
return 0;
}