求助WA+RE8分
查看原帖
求助WA+RE8分
487199
white_carton楼主2023/8/1 00:02
#include<bits/stdc++.h>
using namespace std;
string a,b;
int z[20000100],zz[20001000],la,lb;
void getnxt(){
	int l=1,r=0;
	z[1]=0;
	for(int i=2;i<=lb;i++){
		if(i>r){
			z[i]=0;
		}
		else{
			int k=i-l+1;
			z[i]=min(z[k],r-i+1);
		}
		while(i+z[i]<=lb&&b[z[i]+1]==b[i+z[i]]){
			++z[i];
		}
		if(i+z[i]-1>r){
			l=i;
			r=i+z[i]-1;
		}
	}
}
int main(){
	cin>>a>>b;
	la=a.size();
	lb=b.size();
	b=" "+b+"#"+a;
	int lc=lb;
	lb=lb+1+la;
	getnxt();
	lb=lc;
	z[1]=lb;
	int ans=0;
	for(int i=1;i<=lb;i++){
		ans^=(i*(z[i]+1));
	}
	cout<<ans<<endl;
	ans=0;
	for(int i=lb+2;i<=lb+la+1;i++){
		ans^=((i-lb-1)*(z[i]+1));
	}
	cout<<ans<<endl;
}

2023/8/1 00:02
加载中...