ZJU-PAT 1078. Hashing (25) 浙大2014年上机复试第二题

来源:互联网 发布:三七互娱广州待遇知乎 编辑:程序博客网 时间:2024/05/29 09:40
#include<iostream>#include<string>#include<cstdio>#include<cmath>#include<algorithm>using namespace std;const int MaxN=20001;int n,m;bool Position[MaxN];void special_process(int cur){    for(int i=1; i<m; i++)    {        int pos=(cur+i*i)%m;        if(Position[pos]==false)        {            Position[pos]=true;            printf("%d",pos);            return;        }    }    printf("-");}bool isprime(){    if(m==0 || m==1)        return false;    if(m==2)        return true;    int k=(int)sqrt(m*1.0);    for(int i=2; i<=k+1; i++)    {        if(m%i==0)            return false;    }    return true;}void Judge(){    int i,tmp;    while(isprime()==false) m++;    for(int i=0; i<MaxN; i++) Position[i]=false;    for(i=0; i<n; i++)    {        if(i>0) printf(" ");        scanf("%d",&tmp);        int cur=tmp%m;        if(Position[cur]==false)        {            Position[cur]=true;            printf("%d",cur);        }        else special_process(cur);    }    printf("\n");}int main(){    while(scanf("%d%d",&m,&n)!=EOF) Judge();    return 0;}

0 0
原创粉丝点击