#include<iostream>
using namespace std;
int prime[1000000],index =0;
bool vis[1000000];
bool site[1000000];
int num[1000000];
void findprime()
{
for(int i= 2 ; i < 1000000 ; i ++)
{
if(vis[i] == false)
{
prime[index++] = i;
for(int j = i * 2 ; j < 1000000 ; j+=i)
vis[j] = true;
}
}
}
int main()
{
findprime();
int tsize,n;
cin>>tsize>>n;
int i;
for( i = 0 ; tsize > prime[i] ; i++);
tsize = prime[i];
for(i = 0; i < n ;i++)
{
int num;
scanf("%d",&num);
if(i)
cout<<" ";
if(site[num % tsize] == false)
{
site[num % tsize] = true;
cout<<num % tsize;
}
else
{
int j ;
for( j = 1 ; j < tsize ;j++)
{
if(site[(num + j*j) % tsize] != true)
{
site[(num + j * j )% tsize] = true;
cout<<(num + j * j) % tsize;
break;
}
}
if(j == tsize)
cout<<"-";
}
}
}
hash正向二次探测
最新推荐文章于 2023-02-02 19:26:34 发布