F
爱音的01串构造
http://Fhttps://ac.nowcoder.com/acm/contest/120564/F
有题意得,1得到0,0得到1,01得到2,因此要想值最大,就必须多01字段,当a=b时,只要输出a次01或10即可,而不同时,需要分类讨论,当a>b的时候,这是就用1来分隔0,把0分割成b+1块,每块长度a/(b+1),若有余数k,就将前k块分别多加入1个0,每块之间放入1。而b>a时,同理可得。
#include<bits/stdc++.h>
using namespace std;
int main() {
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){
for(int i=0;i<a;i++){
s+="10";
}
}
else if(a>b){
int x=a/(b+1);
int k=a%(b+1);
for (int i=1;i<=b+1;i++){
if (k>0){
s+=string(x+1,'0');
k--;
}
else{
s+=string(x,'0');
}
if(i<= b){
s+='1';
}
}
}
else{
int x=b/(a+1);
int k=b%(a+1);
for (int i=1;i<=a+1;i++){
if (k>0){
s+=string(x+1,'1');
k--;
}
else{
s+=string(x,'1');
}
if(i<=a){
s+='0';
}
}
}
cout<<s<<'\n';
}
return 0;
}