这题理解是有点难的,所以直接用数学公式证明最好。首先,总子串数量为n,01串为m,1串为e,0为p,那么最大值为2m+p,也等于2(n-e-p)+p=2n-2e-p,所以其实是要0串最少,1串最少,所以要平均插入
#include<bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);cin.tie(0);
int T;cin>>T;
while(T--){
int a,b;cin>>a>>b;
string s;
if(a==0)s=string(b,'1');
else if(b==0)s=string(a,'0');
else if(a>=b){
int avg=a/(b+1),rem=a%(b+1);
for(int i=0;i<b+1;++i){
int cnt=avg;
if(i<rem)cnt++;
s+=string(cnt,'0');
if(i<b)s+='1';
}
}else{
int avg=b/(a+1),rem=b%(a+1);
for(int i=0;i<a+1;++i){
int cnt=avg;
if(i<rem)cnt++;
s+=string(cnt,'1');
if(i<a)s+='0';
}
}
cout<<s<<'\n';
}
return 0;
}

京公网安备 11010502036488号