poj1961 period KMP求循环节

来源:互联网 发布:神雕侠侣源码 编辑:程序博客网 时间:2024/05/18 02:04

http://poj.org/problem?id=1961

#include <cstdio>#include <cstring>#include <iostream>using namespace std;int len,t;char s[1000005];int next[1000005];int main(){    while(1){        scanf("%d",&len);        if(len == 0)break;        scanf("%s",s);        printf("Test case #%d\n",++t);        int i = 0,j = -1;        next[0] = -1;        while(i != len){            if(j == -1 || s[i] == s[j]){                next[++i] = ++j;                if(i % (i - next[i]) == 0){                    int k = i / (i - next[i]);                    if(k>1)printf("%d %d\n",i,k);                }            }            else j = next[j];        }        printf("\n");    }     return 0;}
0 0