A. Many Equal Substrings--codeforces(div3)

版权声明:《学习技巧》每次使用单边大脑的时间不要太久,连续使用左边大脑30分钟就如同连续使用左臂30分钟一样,周期性的交换让大脑两侧能够轮流休息,左脑活动包括了循序渐进的工作,解决逻辑问题与分析,而右脑活动包括了隐喻,创造性思考,模式匹配和可视化。 https://blog.csdn.net/intmainhhh/article/details/82026738

题目链接

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn=50+10;
int nex[maxn];
string p;
void get_next() {
    int q,k;
    int m = p.length();
    nex[0] = 0;
    for (q = 1,k = 0; q < m; ++q) {
        while(k > 0 && p[q] != p[k])
            k = nex[k-1];
        if (p[q] == p[k]) {
            k++;
        }
        nex[q] = k;
    }
}
int main() {

    int n,k;///1<= n,k <=50
    cin>>n>>k;
    k--;
    cin>>p;
    get_next();
    int len=nex[n-1];
    while(k--)
        p=p+p.substr(len,n-len);
    cout<<p;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/intmainhhh/article/details/82026738