B. Binary Period(水、Educational Codeforces Round 86 (Rated for Div. 2))

B. Binary Period

CF 1342B

题意:给定字符串 t t t,输出字符串 s s s ∣ s ∣ |s| s长度小于等于 2 ⋅ ∣ t ∣ 2·|t| 2t),使得 s s s中的周期最小。

思路:判断 t t t中是否同时有 0 、 1 0、1 01

  • 如果单一,最小周期为 1 1 1:直接输出
  • 如果同时有 0 、 1 0、1 01,最小周期为 2 2 2:输出 01 01 01间隔串
int n;
int main(){
    
    
    int t,tt,f1=0,f0=0,len;
    LL x,a,b,y,ans;
    cin>>t;
    string s;
    while(t--){
    
    
        cin>>s;
        f1=0;f0=0;
        len=s.length();
        for(int i=0;i<len;i++){
    
    
            if(s[i]-'0')f1++;
            else f0++;
        }
        if(f1==0){
    
    
            for(int i=1;i<=len;i++)
                cout<<"0";
            cout<<endl;
            continue;
        }
        if(f0==0){
    
    
            for(int i=1;i<=len;i++)
                cout<<"1";
            cout<<endl;
            continue;
        }
        if(s[0]=='0'){
    
    
            for(int i=0;i<len;i++){
    
    
                cout<<"01";
            }
            cout<<endl;
            continue;
        }
        if(s[0]=='1'){
    
    
            for(int i=0;i<len;i++){
    
    
                cout<<"10";
            }
            cout<<endl;
            continue;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_44986601/article/details/105829278