求助WA0pts,有的数据能过,有的就过不了
查看原帖
求助WA0pts,有的数据能过,有的就过不了
145119
WhiteLabs楼主2021/11/1 11:55

代码:

#include <bits/stdc++.h>

using namespace std;

const long long N=1e6+7,MOD=1e9+7;

long long T,n;
string s;
long long nxt[N],ans[N];
long long ans_final=1;

inline void getnext(){
	nxt[0]=-1;
	int i=1,j=0;
	while(i<n){
		while(s[i]^s[j]&&(~j)) j=nxt[j];
		
		i++,j++,nxt[i]=j,ans[i]=ans[j]+1;
 	}
}
//abbcab

inline void getnum(){
	int i=1,j=0;
	while(i<n){
		while(s[i]^s[j]&&(~j)) j=nxt[j];
		while((j<<1)>=i) j=nxt[j];
		i++,j++;
  		if(~j) ans_final=1ll*ans_final*(ans[j]+1)%MOD;
		
	}
}

int main(){
	cin>>T;
	while(T--){
		cin>>s;
		n=s.length();
		memset(nxt,0,sizeof(nxt));
		memset(ans,0,sizeof(ans));
		ans[1]=1;
		ans_final=1;
		
		getnext();
		getnum();
		cout<<ans_final<<endl;
	}
	return 0;
}
2021/11/1 11:55
加载中...