#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
using namespace std;
const int maxm=1000500;
char p[maxm];
int m,next[maxm];
void getnext()
{
int i=0,j=next[0]=-1;
while(i<m)
{
if(j==-1||p[i]==p[j])
{
++i;++j;
next[i]=p[i]!=p[j]?j:next[j];
}
else j=next[j];
}
}
int main()
{
while(~scanf("%s",p))
{
if(!strcmp(p,"."))break;
m=strlen(p);
getnext();
int cc=1;
if(m%(m-next[m])==0)
cc=m/(m-next[m]);
cout<<cc<<endl;
}
return 0;
}
poj2406 Power Strings(最大重复子串)
最新推荐文章于 2023-07-03 22:05:33 发布