codeforces round506(div3)A. Many Equal Substrings

又是一道有点坑的A题。这道题要找出最长的前缀等于后缀,然后输出这个前缀和k个前缀的互补串

#include<bits/stdc++.h>
using namespace std;
string t;
int main()
{
    int n,k;
    scanf("%d%d",&n,&k);
    cin>>t;
    int i;
    for(i=1;i<n;i++)
    {
        string s1=t.substr(0,n-i);
        string s2=t.substr(i);
        if(s1==s2)
        {
            string s3=t.substr(n-i);//找到最小互补串(先要确定最长的前缀等于后缀) 
            cout<<s1;
            for(int j=1;j<=k;j++)
               cout<<s3;
            cout<<endl;
            break;
        }
    }
    if(i==n)
    {
        for(int i=1;i<=k;i++)
          cout<<t;
        cout<<endl;
    }
}
原文地址:https://www.cnblogs.com/lishengkangshidatiancai/p/10254266.html