📄 pku2799.cpp
字号:
#include <stdio.h>
int IP[1001][4];
int N;
int GetBit(int k, int *p)
{
int ans;
ans = p[k / 8];
ans &= (1 << (k % 8));
return ans;
}
int main()
{
int N, i, j, end;
int Mask[4];
int found = 0;
scanf("%d", &N);
for (i = 0; i < N; i++)
{
scanf("%d.%d.%d.%d", &IP[i][3], &IP[i][2], &IP[i][1], &IP[i][0]);
}
for (i = 31; i >= 0; i--)
{
for (j = 0; j < N; j++)
{
if (GetBit(i, IP[0]) != GetBit(i, IP[j]))
{
found = 1;
break;
}
}
if (found)
{
break;
}
}
end = i;
for (i = 0; i < 4; i++)
{
Mask[i] = 0;
}
for (i = 31; i > end; i--)
{
Mask[i / 8] |= (1 << (i % 8));
}
for (i = 0; i < 4; i++)
{
IP[0][i] &= Mask[i];
}
printf("%d.%d.%d.%d\n", IP[0][3], IP[0][2], IP[0][1], IP[0][0]);
printf("%d.%d.%d.%d\n", Mask[3], Mask[2], Mask[1], Mask[0]);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -