求助
  • 板块学术版
  • 楼主__gcd__
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/11/5 21:38
  • 上次更新2023/11/4 01:21:23
查看原帖
求助
311478
__gcd__楼主2021/11/5 21:38
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<map>
using namespace std;
const long long SIZE=1e6+5,b=1e9+9,p1=1e9+7,p2=1e9+9;
long long sum1[SIZE],sum2[SIZE];
unsigned long long power[SIZE];
char s1[SIZE],s2[SIZE];
int main(){
	int n;
	cin>>n;
	power[0]=1;
	for(int i=1;i<=SIZE;i++)
	 	power[i]=(power[i-1]*b);
	for(int i=1;i<=n;i++){
		scanf("%s%s",s1+1,s2+1);
		int n=strlen(s1+1);
		int m=strlen(s2+1);
		long long sl1=0,sl2=0;
		sum1[0]=0;
		sum2[0]=0;
		for(int i=1;i<=m;i++){
			sum1[i]=(sum1[i-1]*b+(long long)(s2[i]-'A'+1))%p1;
			sum2[i]=(sum2[i-1]*b+(long long)(s2[i]-'A'+1))%p2;
		}
		for(int i=1;i<=n;i++)
		{
			sl1=(sl1*b+(long long)(s1[i]-'A'+1))%p1;
			sl2=(sl2*b+(long long)(s1[i]-'A'+1))%p2;
		}
		int ans=0;
		for(int i=0;i<=m-n;i++){
			if(sl1==(sum1[i+n]-(sum1[i]*power[n])%p1)%p1&&sl2==(sum2[i+n]-(sum2[i]*power[n])%p2)%p2)
			  ++ans;
		}
		cout<<ans<<endl;
	}
	return 0;
}

求各位大佬告知我双哈希哪错了

2021/11/5 21:38
加载中...