POJ 2406 Power Strings
KMP第二题 这次知道了前缀数组的另一奇葩所在。
题目大意:
给出一个字符串,某个子串链接n次产生的,求最大的n。
这一看KMP算法正合适啊,就啪啪写上了,但是WA。之后发现了这样子一组数据:aabaabaa
得特判啊~~
见代码:
#include <stdio.h> #include <string.h> char s[1000005]; int num[1000005]; int main() { int n,case1=1; while(scanf("%s",s),s[0]!='.') { int j=-1; num[0]=-1; n=strlen(s); for(int i=0;i<n;) { if(j==-1||s[i]==s[j])num[++i]=++j; else j=num[j]; } if(n%(n-num[n])==0) printf("%d\n",n/(n-num[n])); else puts("1"); } return 0; }