标签:
题目链接:点击打开链接
题意描述:给一个字符串,求这个字符串中每个前缀自身是否有周期性?
解题思路:kmp即可
代码:
#include <cstdio>
#include <cstring>
#define MAXN 1000010
using namespace std;
void getNext(char* str,int len,int* next){
int i,j;
j=next[0]=-1;
i=0;
while(i<len){
while(j!=-1&&str[i]!=str[j]) j=next[j];
++i,++j;
next[i]=j;
}
}
char st[MAXN];
int next[MAXN];
int main(){
int t=0,n;
while(++t){
scanf("%d",&n);
if(!n) break;
scanf("%s",st);
getNext(st,n,next);
printf("Test case #%d\n",t);
for(int i=2;i<=n;i++){
if((i%(i-next[i])==0)&&(i/(i-next[i])>1))
printf("%d %d\n",i,i/(i-next[i]));
}
printf("\n");
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/mengxingyuanlove/article/details/48132113