题目
https://pintia.cn/problem-sets/994805342720868352/problems/994805389634158592
AC代码
#include<bits/stdc++.h>
using namespace std;
int isPrime(int x)
{
if(x<=1) return 0;
else if(x==2) return 1;
for(int i=2;i<=sqrt(x);i++)
if(x%i==0) return 0;
return 1;
}
int main()
{
int m,n,maxm;
cin>>m>>n;
while(isPrime(m)==0) m++;
int vis[m]={0};
for(int i=0;i<n;i++)
{
int t,t1,index;
cin>>t;
for(index=0;index<m;index++)
{
t1=(t+index*index)%m;
if(vis[t1]==0) break;
}
if(i!=0) cout<<" ";
if(index==m) cout<<"-";
else
{
vis[t1]=1;
cout<<t1;
}
}
}
注意
此题需要掌握平方探测法解决哈希冲突的原理和方法,并注意相应条件的判断即可
本文详细解读了一道关于哈希冲突解决的编程题目,重点介绍了使用平方探测法的AC代码实现。通过一个C++代码示例,展示了如何在哈希表中插入元素并避免冲突。代码中包含关键函数`isPrime`用于检查素数,并利用平方探测法处理冲突。在实际应用中,理解哈希冲突的解决方法对于提升数据结构和算法能力至关重要。
643





