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; }