POJ2406 Power Strings

POJ2406


#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int maxn=1000010; char b[maxn]; int next[maxn]; void prekmp() { int j=-1;next[0]=-1; for(int i=1;b[i];++i) { while(j!=-1&&b[i]!=b[j+1]) j=next[j]; if(b[i]==b[j+1]) j++; next[i]=j; } } int main() { while(scanf("%s",b)!=EOF) { if(b[0]=='.') break; prekmp(); int len=strlen(b); next[len-1]++; if(len%(len-next[len-1])==0) printf("%d\n",len/(len-next[len-1])); else printf("1\n"); } return 0; }

  

posted on 2013-09-09 00:29  Amo.  阅读(205)  评论(0)    收藏  举报

导航