题目
输入
输出
思路
要使这个 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';
}
}
}

京公网安备 11010502036488号