求问 这题p附什么值能过啊?
改了好几个数都过不了
#include<bits/stdc++.h>
#define int long long
#define p 100000000000007
#define q 99820000044353
using namespace std;
int n;
struct node
{
int dat,num,id;
}b[2000001];
char a[2001];
bool cmp(node x,node y)
{
return x.dat==y.dat?x.num==y.num?x.id<y.id:x.num<y.num:x.dat<y.dat;
}
int ans[20000010],m;
signed main()
{
// freopen("P2580_9.in","r",stdin);
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a;
int t=strlen(a);
for(int j=0;j<t;j++)
{
b[i].dat=(b[i].dat*p+a[j])%q;
}
b[i].num=1;
}
cin>>m;
for(int i=n+1;i<=n+m;i++)
{
cin>>a;
int t=strlen(a);
for(int j=0;j<t;j++)
{
b[i].dat=(b[i].dat*p+a[j])%q;
}
b[i].num=2;
b[i].id=i-n;
}
sort(b+1,b+1+n+m,cmp);
for(int i=1;i<=n+m;i++)
{
// cout<<b[i].dat<<" "<<b[i].num<<endl;
if(b[i].dat!=b[i-1].dat&&b[i].num==2&&b[i-1].num==1)
ans[b[i].id]=1;
else if(b[i].dat==b[i-1].dat&&b[i].num==2&&b[i-1].num==1)
ans[b[i].id]=2;
else if(b[i].dat==b[i-1].dat&&b[i].num==2&&b[i-1].num==2)
ans[b[i].id]=3;
else if(b[i].num==2&&b[i-1].num==2)
ans[b[i].id]=1;
}
for(int i=1;i<=m;i++)
cout<<(ans[i]==1 ? "WRONG\n" : ans[i]==2 ?"OK\n":"REPEAT\n");
// cout<<ans<<endl;
}
```