UVA 1590
阿新 • • 發佈:2019-02-20
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int cmp(const void* a, const void *b)
{
return *(int *)a - *(int *)b;
}
int ip[2000][2000] = { 0}, IP[4],A[4];
int ta[9] = {255, 254, 252, 248, 240, 224, 192, 128, 0};
int main()
{
int n;
while(scanf("%d", &n)!=EOF)
{
int i ;
for(i = 0; i < n; i++)
scanf("%d.%d.%d.%d", &ip[0][i],&ip[1][i], &ip[2][i],&ip[3][i]);
for(i = 0; i < 4; i++)
{
qsort(ip[i],n,sizeof(ip[i][0]),cmp);
int w, q;
w = ip[i][n - 1];
q = ip[i][0];
int decide = 0,p = 0;
int j;
for(j = 1; j <= 8; j++)
{
if(q%2!=w%2)
{
p = j;
}
q /=2;
w /=2;
}
A[i] = ta[p];
IP[i] = A[i] & ip[i][0 ];
if(A[i]!=255)
break;
}
for(i = i + 1; i < 4; i++)
{
A[i] = 0;
IP[i] = 0;
}
printf("%d.%d.%d.%d\n",IP[0],IP[1],IP[2],IP[3]);
printf("%d.%d.%d.%d\n",A[0],A[1],A[2],A[3]);
memset(ip,0,sizeof(ip));
memset(IP,0,sizeof(IP));
memset(A,0,sizeof(A));
}
return 0;
}