poj2769 简单数论

这题是求最小的数m,使所有数对m求模的结果不一样。

利用a - b = m 则a % m == b  % m 将任于两个数的差去掉,然后穷举其它每个数就行了。


#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
const int MAXN = 1000010;
bool visit[MAXN];
bool remainder[MAXN];
int main()
{
	int t;
	int n;
	int  num[310];
	scanf("%d",&t);
	while(t--)
	{
		scanf("%d",&n);
		memset(visit, 0, sizeof(visit));
		int maxNum = 0;
		int i;
		for(i = 0; i < n;  i++)
		{
			scanf("%d",&num[i]);
		}
		int j;
		for(i = 0; i < n; i++)
		{
			for(j = 0; j < n; j++)
			{
				visit[abs(num[i] - num[j])] = true;
			}
		}
	
		for(i = 1;  ; i++)
		{

			if(!visit[i])
			{
			//	cout<<"i= "<<i<<endl;
					memset(remainder,0,sizeof(remainder));
					bool flag = true;
				for(j = 0; j < n; j++)
				{
					if(remainder[num[j] % i] == true)
					{
						flag = false;
						break;
					
					}
						remainder[num[j] % i] = true;
					
				}
				if(flag == true)
				{
					printf("%d\n",i);
					break;
				}
				
			}
		}


	}
	return 0;
}




你可能感兴趣的:(poj2769 简单数论)