#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int n;
char str[1000010];
int next[1000010];
void getnext()
{
int i= 0, j= -1; next[0]= -1;
while( str[i] )
{
if( j== -1 || str[i]== str[j] )
{
i++,j++;
next[i]= j;
}
else j= next[j];
}
}
int main()
{
int test= 1;
while( scanf("%d",&n), n!= 0 )
{
getchar(); gets(str);
getnext();
printf("Test case #%d\n", test++ );
for( int i= 2; i<= n; ++i )
{
int t= i- next[i];
if( i% t== 0 && i/ t> 1 )
printf("%d %d\n", i, i/ t );
}
printf("\n");
}
return 0;
}
posted on 2009-02-07 18:20
Darren 阅读(364)
评论(2) 编辑 收藏 引用