Codeforces Round #506 ——A(Many Equal Substrings)

版权声明:转载请联系QQ:1810647785 https://blog.csdn.net/weixin_42619451/article/details/82353866

Many Equal Substrings

题目描述

给定字符串 s 和需要的数量 k ,得到一个字符串 t ,要能够从 t 中得到 k s 字符串,求最短的 t 1 n , k 50

实例1

输入

3 4
aba

输出

ababababa

实例2

输入

3 2
cat

输出

catcat


题解

从字符串的前和后找出两个最长的等长的子串,从前串的头开始找与后串相同的的最长子串,且后串的相同最长子串的尾必须是整个字符串的尾。循环输出前串相同最长子串后面的所有字符。

实现

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#define ll long long
using namespace std;

int n, k;
string s;

int main() {
    cin >> n >> k >> s;
    int len = 0;
    for(int i = 1; i < n; i++) {
        if(s.substr(0, i) == s.substr(n - i)) {
            len = i;
        }
    }
    cout << s;
    string t = s.substr(len);
    for(int i = 1; i <= k; i++) {
        cout << t;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42619451/article/details/82353866