poj1961 Period

毒瘤題。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 }
AC代碼
相關文章
相關標籤/搜索