90分求助
查看原帖
90分求助
983170
tlbc_zxyuf楼主2025/7/28 22:12

WA第三个点,输出2,应输出5。 代码如下:

#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
using namespace std;
const ll N=10005;
ull n,arr[N],sum=1,xyc[N],lzx[N],brr[N],ans;
string a,b;
int main(){
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin>>a>>b;
  xyc[0]=lzx[0]=1;
  for(int i=1;i<=a.size();i++) xyc[i]=xyc[i-1]*271,arr[i]=arr[i-1]+a[i-1]*xyc[i-1];
  for(int i=1;i<=b.size();i++) lzx[i]=lzx[i-1]*271,brr[i]=brr[i-1]+b[i-1]*lzx[i-1];
  for(ull i=1;i<=a.size();i++){
  	for(ull j=i;j<=a.size();j++){
  		for(ull k=1;k<=b.size();k++){
  			for(ull n=k;n<=b.size();n++){
  				if(j-i!=n-k) continue;
  				if(i>k) {
  					ull h=arr[n]-arr[k-1],h1=brr[j]-brr[i-1];
  					if(h*lzx[k-i]==h1) ans=max(ans,j-i+1);
  				}
  				else{
  					ull h=arr[j]-arr[i-1],h1=brr[n]-brr[k-1];
  					if(h*xyc[k-i]==h1) ans=max(ans,j-i+1);
  				}
  			}
  		}
  	}
  }
  cout<<ans;
  return 0;
} 
2025/7/28 22:12
加载中...