0pts,样例都没过
查看原帖
0pts,样例都没过
1135901
Programming_Konjac楼主2024/7/18 15:19

rt,不知道怎么改了。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
void getNext(char p[],int Next[]){
    int i,j,n=strlen(p+1);
    for(Next[1]=j=0,i=2; p[i]; i++){
        while(j&&p[i]!=p[j+1]) j=Next[j];
        if(p[i]==p[j+1]&&(j+1)*2<=n) j++;
        Next[i]=j;
    }
}
int Next[2000005]={0};
char s[2000005];
int main(){
    int t;
    cin>>t;
    while(t--){
        scanf("%s",s+1);
        getNext(s,Next);
        int len=strlen(s+1);
        int haha=1;
        for(int i=1; i<=len; i++){
            haha=haha*((Next[i]+1)%1000000007)%1000000007;
        }
        cout<<haha<<"\n";
    }
	return 0;
}
2024/7/18 15:19
加载中...