hdu-1358

来源:互联网 发布:2017淘宝怎么打造爆款 编辑:程序博客网 时间:2024/06/03 18:33
#include<stdio.h>const int maxn=1000000+10;char p[maxn];int f[maxn];int main(){int n,i,j,cast=0;while(scanf("%d",&n)==1 && n){scanf("%s",p);f[0]=0;f[1]=0;for(i=1;i<n;++i){j=f[i];while(j && p[i]!=p[j])j=f[j];f[i+1]=(p[i]==p[j])?j+1:0;}printf("Test case #%d\n",++cast);for(i=2;i<=n;++i){j=i-f[i];if(i%j==0 && i/j>1)printf("%d %d\n",i,i/j);}printf("\n");}return 0;}

知道kmp可以求周期子串。

原创粉丝点击