取余法+平方探测关键代码:
int t;
scanf("%d",&t);
t=t%p;
hashh[t]++;
if(hashh[t]==0)
a[s++]=t;
else
{
for(int j=1;j<=p-1;j++)
{
if(hashh[(t+j*j)%p]==-1)
{
a[s++]=(t+j*j)%p;
hashh[(t+j*j)%p]++;
break;
}
else if(hashh[(t-j*j)%p]==-1)
{
a[s++]=(t-j*j)%p;
hashh[(t-j*j)%p]++;
break;
}
}
}
取余法+线性探测关键代码:
scanf("%d",&key);
t=key%p;
if(hashh[t]==-1)
{
b[s++]=t;
}
while(hashh[t%p]!=-1)
{
t++;
}
b[s++]=t%p;