poj 2406 Power Strings
Power Strings
题目大意:给定一个字符串长度为n,已知这个字符串是由某个字符串 S 重复 R 次而得到的,求 R 的最大值。
#include<iostream> #include<cstdio> #include<cstring> #define maxn 10000010 using namespace std; int l,nxt[maxn]; char s[maxn]; void getnxt(){ int i=0,j=-1; nxt[0]=-1; while(i!=l){ if(s[i]==s[j]||j==-1)nxt[++i]=++j; else j=nxt[j]; } } int main(){ while(1){ scanf("%s",s); l=strlen(s);if(l==1&&s[0]=='.')return 0; getnxt(); int ans=1; if(l%(l-nxt[l])==0)ans=l/(l-nxt[l]); printf("%d\n",ans); } }