#include<stdio.h>
#include<string.h>
char str[1001000];
int next[1001000];
int n,m;
int main()
{
while(scanf("%d%d%s",&n,&m,str)!=EOF)
{
int end=n+m;
while(n<end)
{
int i=n-1,len=-2,j=n,x=n-1,y;
next[n-1]=n;
while(i>=0)
{
if(j==n||str[j]==str[i])
{
i--;
j--;
next[i]=j;
if(n-1-j>13) break;
if(len<n-1-j-1)
{
len=n-1-j-1;
x=j;
y=i;
}
}else j=next[j];
}
int index=n-1-x+y+1;
if(x==n-1) {str[n++]='0';/*printf("haha\n");*/}
else str[n++]=str[index];
}
str[end]='\0';
printf("%s\n",str+end-m);
}
return 0;
}
poj 2541 Binary Witch
最新推荐文章于 2016-08-05 15:47:05 发布