思路:
首先简单观察后可得:10为2,全0为1,全1为0.所以我们要多10,当a=b时输出a个10就可以了。然后我们可以发现,要尽可能的减少全1的位数,所以当b>a时,要用每一个a把b尽量均匀的分开,反之同理,这样就减少了连续1的位数。
代码:
#include<bits/stdc++.h>
using namespace std;
void slove() {
int a,b; cin>>a>>b;
if(a==b) {
for(int i=1;i<=a;i++) cout<<"10";
cout<<endl;
}
else if(a<b) {
int k=b/(a+1);
int d=b%(a+1);
string s;
for(int i=1;i<=a;i++) {
for(int j=1;j<=k;j++) s+='1';
if(i<=d) s+='1';
s+='0';
}
for(int i=1;i<=k;i++ ) s+='1';
cout<<s<<endl;
}
else if(a>b) {
int k=a/(b+1);
int d=a%(b+1);
string s;
for(int i=1;i<=b;i++) {
for(int j=1;j<=k;j++) s+='0';
if(i<=d) s+='0';
s+='1';
}
for(int i=1;i<=k;i++ ) s+='0';
cout<<s<<endl;
}
}
int main() {
int t; cin>>t;
while(t--) {
slove();
}
}

京公网安备 11010502036488号