#include<cstdio>
#include<cstring>
const int maxn=1000000+10;
char b[maxn];
int p[maxn];
int m;
void get(){
p[1]=0;
int i,j=0;
for(i=2;i<=m;i++){
while(j>0&&b[j+1]!=b[i]) j=p[j];
if(b[j+1]==b[i]) j++;
p[i]=j;
}
}
int main(){
int kase=1;
while(scanf("%d",&m)){
if(m==0) break;
scanf("%s",b+1);
printf("Test case #%d\n",kase++);
get();
for(int i=2;i<=m;i++){
if(i%(i-p[i])==0&&p[i]!=0){
printf("%d %d\n",i,i/(i-p[i]));
}
}
printf("\n");
}
return 0;
}
tjut 1358
最新推荐文章于 2020-05-27 20:28:20 发布