题目
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/162db3af2572613bd1bf6a4bb5dd51b1.png)
答案
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int a[100005],b[100005],vis[100005],flag=0;
memset(a,0,sizeof a);
memset(b,0,sizeof b);
memset(vis,0,sizeof vis);
int n,p;
cin>>n>>p;
for(int i=0;i<n;i++)
{
cin>>a[i];
int index=a[i]%p;
if(vis[index])
{
while(vis[index]&&b[index]!=a[i])
index=(index+1)%p;
}
b[index]=a[i];
vis[index]=1;
if(flag==0) flag=1;
else cout<<" ";
cout<<index;
}
}
文章参考
整型关键字的散列映射
注意
- 使用memset函数前需要调用cstring库,即
#include<cstring>
- 注意重复数字的情况,即
b[index]!=a[i]