没考虑 len%(len-f[len])!=0 的情况,太挫了
#include <iostream>
#include <cstdio>
#include <vector>
#include <cmath>
#include <stack>
#include <cstring>
using namespace std;
char str[1000500];
int f[1000500];
int main ()
{
while(scanf("%s",str)!=EOF)
{
int len=strlen(str);
if(len==1&&str[0]=='.') break;
/*if(len==1)
{
printf("1\n");
continue;
}*/
f[0]=f[1]=0;
for(int i=1;i<len;++i)
{
int j=f[i];
while(j&&str[j]!=str[i]) j=f[j];
f[i+1]= str[i]==str[j]?j+1:0;
}
printf("%d\n",len%(len-f[len])==0?len/(len-f[len]):1);
}
return 0;
}