哈希表的 拉链法用邻接表来存储。mod的数一般取质数且距离2的整次幂尽可能的远。
所以就先写个判断质数,找到大于1e5的最小的质数是,就是我们的N。注意初始化h数组
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+3;
int e[N],ne[N],idx,h[N];
void insert(int x)
{
int k=(x%N+N)%N;//避免为负数
e[idx]=x;
ne[idx]=h[k];
h[k]=idx++;
}
bool find(int x)
{
int k=(x%N+N)%N;
for(int i=h[k];i!=-1;i=ne[i])
{
if(e[i]==x)
return true;
}
return false;
}
int main()
{
memset(h,-1,sizeof(h));
int n;
string s;
cin>>n;
while(n--)
{
int x;
cin>>s>>x;
if(s=="I")
insert(x);
else
{
if(find(x))
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}
return 0;
}