#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
bool isprime(const int &a){
if(a==1) return false;
if(a==2) return true;
int len=(int)sqrt((double)a);
for(int i=2;i<=len;i++){
if(a%i==0) return false;
}
return true;
}
int main(){
int MSize,NSize;
cin>>MSize>>NSize;
int TSize=MSize;
if(!isprime(MSize)){
for(int i=MSize+1;;i++){
if(isprime(i)){
TSize=i;
break;
}
}
}
bool mark[TSize],mark2[TSize];
memset(mark,0,sizeof(mark));
for(int i=0;i<NSize;i++){
int x;
cin>>x;
if(i==0){
int tmp=x%TSize;
cout<<tmp;
mark[tmp]=1;
}
else{
int tmp=x%TSize;
int ii=0;
int yy,zz;
memset(mark2,0,sizeof(mark));
while(1){
yy=(tmp+ii*ii)%TSize;
zz=(tmp+(ii+1)*(ii+1))%TSize;
if(mark2[yy]&&mark2[zz]) {
cout<<" -";
break;
}
if(!mark[yy]){
cout<<' '<<yy;
mark[yy]=1;
break;
}
else {
mark2[yy]=1;
}
++ii;
}
}
}
return 0;
}
pat 1078 quadratic probing
最新推荐文章于 2024-08-05 23:37:04 发布