也是循环节,代码如下
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int nextval[1000005];
void Getnext(char s[],int len)
{
int j,k;
j=0;
k=nextval[0]=-1;
while(j<len){
if(k==-1||s[j]==s[k]) nextval[++j]=++k;
else k=nextval[k];
}
}
int main()
{
char s[1000005];
while(~scanf("%s",s)){
if(s[0]=='.') break;
int len=strlen(s);
Getnext(s,len);
int temp=len-nextval[len];
if(len%temp==0) {
printf("%d\n",len/temp);
}
else printf("1\n");
}
}