poj 2769 Reduced ID Numbers
题目地址: 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; } }