题目地址: http://poj.org/problem?id=2769
要点 :1 如果在确定了模数后再在循体里面用双重for循环检测是否存在 同余的一定会超时 需要寻找O(n)复杂度的方法
2一开始想使用map 检测是否重复,结果还是超时 最后还是用类似于筛法的方法,关键点是初始化时只能(也只需要)初始化到k,否则仍会tle
#include<iostream>
#include<map>
#include<cstdlib>
using namespace std;
int main()
{
bool find[100000];
int size;
cin>>size;
int n;
while(cin>>n)
{
map<int,int> m;
int *p =new int[n];
for(int i=0;i<n;i++)
cin>>p[i];
int k;
bool bad;
for(k=n;;k++)
{
bad=0;
for(int i=0;i<k;i++)
find[i]=0;
for(int i=0;i<n;i++)
{
if(find[p[i]%k]==1)
{
bad=1;
break;
}
find[p[i]%k]=1;
}
if(bad==0) break;
}
cout<<k<<endl;
}
}