POJ2406 Power Strings

来源:互联网 发布:常见办公软件 编辑:程序博客网 时间:2024/05/21 18:48

题目:http://poj.org/problem?id=2406
分析:kmp next数组的应用.如果是周期串,则len%(len-next[len])==0,且len/(len-next[len])即为周期.
代码:

#include <cstdio>#include <algorithm>#include <cstring>using namespace std;const int Tmax=1000005;char s[Tmax];int len,f[Tmax];void getfail(){    int i=0,j=-1;    f[0]=-1;    while(i<len)    {        if(j==-1||s[i]==s[j])        {            i++;            j++;            f[i]=j;        }        else j=f[j];    }    return;}int main(){    while(scanf("%s",s)&&s[0]!='.')    {        len=strlen(s);        getfail();        if(len%(len-f[len])==0) printf("%d\n",len/(len-f[len]));        else printf("1\n");    }    return 0;}
0 0
原创粉丝点击