标签:des style blog io ar for strong sp div
Time Limit: 3000MS | Memory Limit: 65536K | |
Total Submissions: 33178 | Accepted: 13792 |
Description
Input
Output
Sample Input
abcd aaaa ababab .
Sample Output
1 4 3
Hint
Source
用next数组求出整个数组的最大前缀,如果整个串是用循环节组成的,那么 n - next[n] 也就是最小循环节,验证最小循环节会被n整出。
#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( l % (l-m) != 0 ) printf("1\n"); else { m = l / ( l-m ); printf("%d\n", m); } memset(str,0,sizeof(str)); } return 0; }
poj2406--Power Strings(KMP求最小循环节)
标签:des style blog io ar for strong sp div
原文地址:http://blog.csdn.net/winddreams/article/details/40268107