字符串的生成
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 55;
int n, k;
char a[N]; int nex[N];
int main()
{
scanf("%d%d",&n,&k);
scanf("%s", a+1);//从下标为一开始输入
//接下来是KMP算法求ne[]数组
for(int i = 2, j = 0; i <= n; i ++ )
{
while(j && a[i] !=a[j+1]) j = nex[j];
if(a[i] == a[j + 1]) j ++;
nex[i] = j;
}
printf("%s",a+1);//首先输出第一个
for(int i = 0; i < k-1; i ++)
{
printf("%s",a + 1 + nex[n]);//剩下的k-1个,一个字符串的最大后缀里面必须是n,nex[n]
}
return 0;
}