125 MS 5256k #include <cstdio> #include <cstdlib> #include <cstring> using namespace std; #define MAX 1000001 char array[MAX] = {0}; int P[MAX] = {0}; int main() { char *ptr = array + 1; while (scanf("%s", ptr) != EOF) { if (array[1] == '.') break; int j = 0; int len = strlen(ptr); for (int i=2; i<=len;) { while (j > 0 && array[j+1] != array[i]) j = P[j]; if (j == 0) { if (array[j+1] != array[i]) { P[i] = 0; ++i; } else { ++j; P[i] = 1; ++i; } } else { ++j; P[i] = j; ++i; } } if (P[len] == len || len%(len-P[len]) != 0) printf("1/n"); else { printf("%d/n", len/(len-P[len])); } } return 0; }