POJ 2406
1 #include <iostream>
2
3 using namespace std;
4
5 char s[1000001];
6
7 void solve()
8 {
9 int l=strlen(s);
10 int i,j,k;
11 int maxi=-1;
12 for(i=1;i<=l;i++){
13 if(l%i!=0) continue;
14 // from j to j+i
15 for(j=i;j<l;j+=i){
16 for(k=0;k<i;k++){
17 if(s[k]!=s[j+k]) break;
18 }
19 if(k<i) break;
20 }
21 if(j==l) maxi=(maxi>(l/i))?maxi:(l/i);
22 }
23
24 printf("%d\n",maxi);
25 }
26
27 int main()
28 {
29 while(scanf("%s",s) && (strlen(s)!=1) || s[0]!='.'){
30 solve();
31 }
32 return 1;
33 }