Power Strings

链接:Miku

大佬的证明

我的代码

-----------------------

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<map>
using namespace std;
char aim[1500001];
int nex[1500001];
int l;
int main(){
    while(scanf("%s",aim+1)&&aim[1]!='.'){
        memset(nex,0,sizeof(nex));
        l=strlen(aim+1);
        nex[1]=nex[0]=0;
        int j=0;
        for(int i=2;i<=l;++i){
            while(j&&aim[i]!=aim[j+1]) j=nex[j];
            if(aim[i]==aim[j+1]) j++;
            nex[i]=j;
        }
        if(l%(l-nex[l])==0)
        printf("%d\n",l/(l-nex[l]));
        else{
            printf("1\n");
        }
    }
    return 0;
}

 

 
posted @ 2020-07-30 16:26  Simex  阅读(150)  评论(0编辑  收藏  举报