hdu 3746 Cyclic Nacklace

 

#include <stdio.h>
#include <string.h>
char b[100020];
int p[100020];
int main()
{
    int i,j,y;
    int cas;
    scanf("%ld",&cas);
    while(cas--)
    {
        scanf("%s",b+1);
        y=strlen(b+1);
        j=0;
        p[1]=0;
        for(i=2;i<=y;i++)
        {
            while(j>0&&b[i]!=b[j+1]) j=p[j];
            if(b[i]==b[j+1])
                j++;
            p[i]=j;
        }
        int len=y-p[y];
        if(len!=y&&y%len==0) printf("0\n");
        else printf("%d\n",len-y%len);
    }
    return 0;
}


 

posted @ 2014-06-06 13:37  贝尔摩德  阅读(125)  评论(0编辑  收藏  举报