POJ 2406 Power Strings KMP求周期
传送门 http://poj.org/problem?id=2406
题目就是求循环了几次。
记得如果每循环输出为1.。。。
#include<cstdio> #include<cstring> const int MAXN=1000000+10; char P[MAXN]; int f[MAXN]; int n,m; void getFail() { int i,j; f[0]=f[1]=0; for(i=1;i<n;i++) { j=f[i]; while(j && P[i]!=P[j]) j=f[j]; if(P[i]==P[j]) j++; f[i+1]=j; } } int main() { while(scanf("%s",P)) { if(P[0]=='.') break; n=strlen(P); getFail(); int min_period=n-f[n]; if(n % min_period!=0) printf("1\n"); //这是1不是0啊。。。。。。T T else printf("%d\n",n / min_period); } }
新 blog : www.hrwhisper.me