题目

alt

输入

alt

输出

alt

思路

要使这个 01 字符串所有非空连续子串的mex之和最大,那么这个字符串的01就应该均匀分布。

当1和0的数量相等时,答案就是101010....;

当0的数量大于1时,要均匀分布,可以想象成a长度的0字符串被分成b+1份。多余的0,就均匀的分布在b+1份的串中。

1大于0的情况同上。

完整代码

```#include<bits/stdc++.h>
using namespace std;
int main(){
    int t;
    cin>>t;
    while(t--){
        int a,b;
        cin>>a>>b;
        if(a==b){
            for(int i=1;i<=a;i++){
                cout<<"01";
                
            }
                cout<<'\n';
         
        }
       else if(a>b){
            int shu=a/(b+1);
            int yu=a%(b+1);
            int b1=b;
            for(int i=1;i<=(b+1);i++){
                 if(yu!=0){
                    cout<<0;yu--;
                     }
                 for(int j=1;j<=shu;j++){
                     cout<<0;
                    
                 }
            if(b1!=0){
                cout<<1;b1--;
            }
            }
           cout<<'\n';
            
        }
        else if(a<b){
             int shu=b/(a+1);
            int yu=b%(a+1);
            int a1=a;
            for(int i=1;i<=(a+1);i++){
                 if(yu!=0){
                    cout<<1;yu--;
                     }
                 for(int j=1;j<=shu;j++){
                     cout<<1;
                    
                 }
                if(a1!=0){
                    cout<<0;a1--;
                }
                }
           cout<<'\n';
    
        }
    }
}