题解:CF2010C2 Message Transmission Error (hard version)

· · 题解

题目大意

输入一个字符串,如果它是由一个字符串和它本身重叠而成,则输出 YES 和那个字符串,否则输出 NO ,如有多解,输出任意解即可。

思路

因为题目范围较小,可以直接暴力字符串的长度,然后再判断是否符合。

Code

#include<bits/stdc++.h>
using namespace std;
string t;
int n,m;
int main(){
    cin>>t;
    m=t.size();
    n=m/2;
    while(n<m-1){
        n++;
        string a="",b=""; 
        for(int i=0;i<n;i++) a+=t[i];
        for(int i=m-n;i<m;i++) b+=t[i];
        if(a==b){ 
            cout<<"YES\n"<<a<<"\n";
            return 0;
        }
    }
    cout<<"NO\n";

    return 0; 
}