#include<bits/stdc++.h>
using namespace std;
int isPrime(int num){
if(num==1)return 0;
if(num<4)return 1;
int a=sqrt(num)+1;
for(int i=2;i<=a;i++){
if(num%i==0)return 0;
}
return 1;
}
int getMPrime(int num){
while(!isPrime(num)){
num++;
}
return num;
}
int main(){
int TSzie,n;
cin>>TSzie>>n;
TSzie=getMPrime(TSzie);
unordered_map<int,int> m;
for(int i=0;i<n;i++){
int tmp;
cin>>tmp;
tmp=tmp%TSzie;
if(m.count(tmp)<=0){
cout<<tmp;
m[tmp]=1;
}
else{
int t=0,flag=0;
for(int i=1;i<=TSzie;i++){
t=tmp+i*i;t=t%TSzie; //Quadratic probing (with positive increments only) is used to solve the collisions.
if(m.count(t)==0){
cout<<t;
m[t]=1;
flag=1;
break;
}
}
if(!flag)cout<<"-";
}
if(i!=n-1){
cout<<" ";
}
}
return 0;
}
PTA1078
于 2023-09-01 15:55:16 首次发布