皇榜
  • 板块学术版
  • 楼主8326abc
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/8/17 22:05
  • 上次更新2023/10/27 14:51:52
查看原帖
皇榜
759346
8326abc楼主2022/8/17 22:05
#include<bits/stdc++.h>
using namespace std;
const int Hash=131;
int l1,l2,r1,r2,n;
char s[1000005];
unsigned long long sum[1000005],p[1000005];
int main()
{
	scanf("%s",s+1);
	int len=strlen(s+1);
	p[1]=1;
	sum[1]=s[1]-'a'+1;
	for(int i=2;i<=len;i++)
	{
		sum[i]=sum[i-1]*Hash+s[i]-'a'+1;
		p[i]=p[i-1]*Hash;
	}
	cin>>n;
	while(n--)
	{
		cin>>l1>>r1>>l2>>r2;
		if(sum[r1]-sum[l1-1]*p[r1-l1+1]==sum[r2]-sum[l2-1]*p[r2-l2+1])
		{
			cout<<"Yes"<<endl;
		}
		else
		{
			cout<<"No"<<endl;
			cout<<sum[r1]-sum[l1-1]*p[r1-l1+1]<<' '<<sum[r2]-sum[l2-1]*p[r2-l2+1];
		}
	}
}

原题 为什么会Wa?把p[0]=1改成p[1]=1,sum[1]=s[1]-'a'+1就Wa了

2022/8/17 22:05
加载中...