Run Time: 0.000
Ranking (as of 2017-01-19): 90 out of 362
Language: C++
Network_address = IP_address & Network_mask.
And for all IP addresses, Network address should be the same.
/*
UVa 1590 - IP Networks
To build using Visual Studio 2012:
cl -EHsc -O2 UVa_1590_IP_Networks.cpp
*/
#include <cstdio>
const int m_max = 1000;
unsigned int ip_addresses[m_max];
void print_address(unsigned int address)
{
printf("%u.%u.%u.%u\n", (address & 0xff000000) >> 24, (address & 0x00ff0000) >> 16,
(address & 0x0000ff00) >> 8, address & 0x000000ff);
}
int main()
{
const int nr_bits = 32;
int m;
while (scanf("%d", &m) != EOF) {
for (int i = 0; i < m;i++) {
int b0, b1, b2, b3;
scanf("%d.%d.%d.%d", &b0, &b1, &b2, &b3);
ip_addresses[i] = b0 << 24 | b1 << 16 | b2 << 8 | b3;
}
unsigned int mask = 0xffffffff, b = 1, address;
for (int i = 0; i <= nr_bits; i++, mask &= ~b, b <<= 1) {
address = ip_addresses[0] & mask;
int j;
for (j = 1; j < m; j++)
if ((ip_addresses[j] & mask) != address)
break;
if (j == m)
break;
}
print_address(address);
print_address(mask);
}
return 0;
}
No comments:
Post a Comment