毒瘤題。html
我可不是在說這個題目毒瘤,我是在說編譯和評測毒瘤...網絡
它不用函數抽象出求next就會T,用了函數就A了,讓我懷疑poj的評測機歧視我。ide
以及以前一題用函數就WA,不用就A,實在是...函數
咱們仔細分析題目,發如今每一個i處若(i + 1)能被(i - j)整除就okspa
而後就隨手敲代碼出來咯,而後被poj的神奇網絡卡了幾天...code
1 #include <cstdio> 2 const int N = 1000010; 3 /// poj 1961 4 /// Period 5 int nex[N], n; 6 char s[N]; 7 inline void getnext() { 8 nex[0] = 0; 9 for(int i = 1, j = 0; i < n; i++) { 10 while(j && s[i] != s[j]) { 11 j = nex[j - 1]; 12 } 13 if(s[i] == s[j]) j++; 14 nex[i] = j; 15 } 16 return; 17 } 18 int main() { 19 int T = 0;; 20 while(scanf("%d", &n)) { 21 if(!n) break; 22 scanf("%s", s); 23 printf("Test case #%d\n", ++T); 24 //printf("%s ", s); 25 getnext(); 26 for(int i = 2; i <= n; i++) { 27 int j = nex[i - 1]; 28 if(j && (i % (i - j) == 0)) { 29 printf("%d %d\n", i, i / (i - j)); 30 } 31 } 32 puts(""); 33 } 34 return 0; 35 }