WA求调
查看原帖
WA求调
1286101
felixzou楼主2025/7/21 15:35
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const int N=2e6+10;
const ll mod=1e9+7,K=97;
ll n,len,pre[N],suf[N],fc[N];
string s,tmps;

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	s.push_back('0');
	cin>>n>>tmps;
	len=tmps.size();
	for(ll i=0;i<len;i++){
		s.push_back(tmps[i]);
	}
	fc[0]=1;
	for(ll i=1;i<=len;i++){
		fc[i]=fc[i-1]*K%mod;
	}
	for(ll i=1;i<=len;i++){
		pre[i]=(pre[i-1]+(s[i]-'a'+1)*fc[i-1])%mod;
	}
	for(ll i=len;i>=1;i--){
		suf[i]=(suf[i+1]+(s[i]-'a'+1)*fc[len-i])%mod;
	}
	for(ll i=1;i<=n;i++){
		ll mid=((pre[i+n-1]-pre[i-1])%mod+mod)%mod,mfc=i-1;
		ll tsd=((suf[1]-suf[i]+suf[i+n]*fc[n]%mod)%mod+mod)%mod,tfc=n;
		if(mid*fc[tfc-mfc]%mod==tsd){
			for(ll j=i+n-1;j>=i;j--){
				cout<<s[j];
			}
			cout<<"\n"<<i-1<<"\n";
			return 0;
		}
	}
	cout<<-1<<"\n";
    return 0;
}
2025/7/21 15:35
加载中...