Time Limit: 3000MS | Memory Limit: 65536K | |
Total Submissions: 33163 | Accepted: 13784 |
Description
Input
Output
Sample Input
abcd aaaa ababab .
Sample Output
1 4 3
Hint
Source
#include <cstdio> #include <cstring> #include <algorithm> int next[1100000] ; char str[1100000] ; void getnext(int l) { int j = 0 , k = -1 ; next[0] = -1 ; while(j < l) { if( k == -1 || str[j] == str[k] ) { j++ ; k++ ; next[j] = k ; } else k = next[k] ; } } int main() { int l , m ; while(scanf("%s", str)!=EOF) { if( str[0] == '.' ) break; l = strlen(str); getnext(l) ; m = next[l]; if( m == -1 ) printf("1\n"); else if(m == l) printf("%d\n", l); else if( l % (l-m) != 0 ) printf("1\n"); else { m = l / ( l-m ); printf("%d\n", m); } memset(str,0,sizeof(str)); } return 0; }