uva 1590

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

#include<string.h>
int ip[1005][4];
char str1[4][9],str2[4][9],mask[4][9];

void (int i){
int flag=0;
for(int j=0;j<4;j++){
int k=8,temp=ip[i][j];
while(k--){
str2[j][k]=temp%2;
temp=temp>>1;
}
}
for(int j=0;j<4;j++){
for(int k=0;k<8;k++){
if(!flag)
if(str2[j][k]!=str1[j][k]){
flag=1;
}
if(flag){
if(i)str1[j][k]=mask[j][k]=0;
else str1[j][k]=str2[j][k];
}

}
}
}

int main(){

//freopen("dataout.txt","w",stdout);
int m;
while(scanf("%d",&m)!=EOF){
for(int i=0;i<m;i++){
for(int j=0;j<4;j++){
scanf("%d",&ip[i][j]);
getchar();
}
}
for(int i=0;i<4;i++){
for(int j=0;j<8;j++){
str1[i][j]=mask[i][j]=1;
}
}
for(int i=0;i<m;i++){
minAdr(i);
}
for(int j=0;j<4;j++){
ip[0][j]=ip[1][j]=0;
for(int k=0;k<8;k++){
ip[0][j]+=(str1[j][k]<<(7-k));
ip[1][j]+=(mask[j][k]<<(7-k));
}
}
for(int i=0;i<2;i++)printf("%d.%d.%d.%dn",ip[i][0],ip[i][1],ip[i][2],ip[i][3]);
}
return 0;
}