题目链接:点击打开链接
题意描述:给一个字符串,求这个字符串中每个前缀自身是否有周期性?
解题思路: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; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-06 07:31:31