#include <string.h>
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
#include <map>
#include <queue>
#include <math.h>
using namespace std;
int Tsize,N;
bool isprime(int x)
{
if(x==1)return false;
if(x==2)return true;
for(int i=2;i<sqrt(x*1.0)+1;i++)
{
if(x%i==0)return false;
}
return true;
}
bool harsh[100010]={false};
int main()
{
scanf("%d%d",&Tsize,&N);
while(!isprime(Tsize))
{
Tsize++;
}
for(int i=0;i<N;i++)
{
if(i!=0)printf(" ");
int num;
scanf("%d",&num);
int result=-1;
for(int j=0;j<=Tsize;j++)
{
int pos=(num+j*j)%Tsize;
if(harsh[pos]==false)
{
result=pos;
harsh[pos]=true;
break;
}
}
if(result==-1)
{
printf("-");
}
else
{
printf("%d",result);
}
}
return 0;
}
PAT甲1078 Hashing(25 分)
最新推荐文章于 2024-01-12 11:22:36 发布