求助站外题!
  • 板块学术版
  • 楼主wang1234567
  • 当前回复5
  • 已保存回复5
  • 发布时间2021/5/21 20:29
  • 上次更新2023/11/4 22:58:54
查看原帖
求助站外题!
305900
wang1234567楼主2021/5/21 20:29

又是我们亲爱的一本通的题这里

#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
ull t,power[1000001],B=,H=,h[1000001],ans;
char a[100001],b[10000001];
int main()
{
	power[0]=1;
	for(int i=1;i<=1000000;i++)
		power[i]=power[i-1]*B;
	cin>>t;
	while(t--)
	{
		ans=0;
		scanf("%s%s",a+1,b+1);
		ull n=strlen(a+1),m=strlen(b+1);
		h[0]=0;
		for(int i=1;i<=m;i++)
			h[i]=(h[i-1]*B+(ull)(b[i]-'A'+1))%H;
		ull sum=0;
		for(int i=1;i<=n;i++) 
			sum=(sum*B+(ull)(a[i]-'A'+1))%H;
		for(int i=0;i<=m-n;i++)
			if(sum==h[i+n]-h[i]*power[n])
				ans++;
		cout<<ans<<endl;
	}
	return 0;
}

请问各位大佬,这道题B和H选什么好?

2021/5/21 20:29
加载中...