B.バイナリ期間(水、教育Codeforces Round 86(Div。2に評価))

B.バイナリ期間

CF 1342B

意味:与えられた文字列ttt、出力文字列sss∣ s ∣ | s || S |長さ2⋅| t | 2・|2 t )、そのようなsssの周期は最小です。

アイデア:裁判官tttに 0、1 0、1が同時に存在するかどうか0 1

  • 単一の場合、最小期間は1 11:直接出力
  • 0、1 0、1が同時に存在する場合0 1、最小期間である2 22:出力01 010 1間隔文字列
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