KMP失配函数的意义
对于一个周期串,他的最小周期为(i−f[i]),k∗(i−f[i])=i,有了这些东西之后这道题就可以很easy的A掉了
char T[maxn];
char P[1009];
int f[maxn];
int n;
int main()
{
int kase = 0;
while(scanf("%d",&n)&&n)
{
scanf("%s",T);
KMP_fail(T,f);//失配函数
printf("Test case #%d\n",++kase);
for(int i =2 ; i<=n ;++i )
{
if(f[i]>0 && i%(i-f[i])==0)printf("%d %d\n",i,i/(i-f[i]));
}
putchar('\n');
}
return 0;
}
这里只给出了核心代码