题解 CF447A 【DZY Loves Hash】
这一题其实可以直接用模拟。
开一个桶,边搜边处理,复杂度O(n)。
具体解释看代码:
#include<bits/stdc++.h>
#include<bitset> //速度加快近四倍
using namespace std;
bool a[301]; //开一个桶,用来存放记录
int p,n;
int main()
{
memset(a,0,sizeof(a));
scanf("%d%d",&p,&n);
for(long long i=0;i<n;i++) //保险一点
{
int s;//临时存放输入的数
scanf("%d",&s);
if(a[s%p]==0)
a[s%p]=1;//直接进行处理
else //已经被存放过
{
printf("%d",i+1); //直接输出
return 0;
}
}
cout<<-1;//没有退出
return 0;
}
看懂了吗?
算法就是用一个桶进行纯模拟,如果有过直接输出,return 0。
管理员大大求过~~