pku2799.cpp

来自「这是ACM 方面的资料 是PKU的 北京大学的出来的」· C++ 代码 · 共 57 行

CPP
57
字号
#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 + =
减小字号Ctrl + -
显示快捷键?