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; }
浙公网安备 33010602011771号