代码如下:
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 1e6+10;
char s[maxn];
int Next[maxn];
int n;
void get_Next(){
Next[0] = Next[1] = 0;
int j = 0;
for (int i=1; i<n; i++) {
while (j && s[j]!=s[i]) j = Next[j];
if (s[j]==s[i]) j++;
Next[i+1] = j;
}
}
int main(){
while (scanf("%s",s)){
if (s[0]=='.') break;
n = strlen(s);
get_Next();
printf("%d\n",n/(n-Next[n]));
}
return 0;
}