Sample Input
abcd
aaaa
ababab
.
Sample Output
1 //1个abcd
4 //4个a
3 //3个ab
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<stdio.h> 2 #include<iostream> 3 #include<string.h> 4 #include<algorithm> 5 using namespace std; 6 7 const int MAXN=1000010; 8 char T[MAXN]; 9 int next[MAXN]; 10 int n; 11 void getNext() 12 { 13 int j,k; 14 j=0; 15 k=-1; 16 next[0]=-1; 17 while(j < n) 18 { 19 if(k==-1||T[j]==T[k]) 20 { 21 j++; 22 k++; 23 24 next[j]=k; 25 } 26 else k=next[k]; 27 28 29 } 30 if(n%(n-k)==0) 31 printf("%d ",n/(n-k)); 32 else 33 printf("1 ") ; 34 } 35 int main() 36 { 37 38 39 while(scanf("%s",&T) != EOF) 40 { 41 if (T[0]=='.') 42 break ; 43 n = strlen(T) ; 44 getNext(); 45 46 } 47 return 0; 48 }