题意
请你构造出一个有 a a a 个 0 0 0 和 b b b 个 1 1 1 的字符串,使它的 0 0 0 和 1 1 1 的个数相差最多的前缀, 0 0 0 和 1 1 1 的个数相差最少。若有多种答案,输出任意一种。多组数据。
思路
先输出 min ( a , b ) \min(a,b) min(a,b) 个连续的 0 0 0 和 1 1 1,使前缀差最小,最后再输出剩余的数字。注意有多组数据。
代码
#include<bits/stdc++.h>
using namespace std;
int a;
int main() {
scanf("%d",&a);
while(a--) {
int b,c;
scanf("%d%d",&b,&c);
int d = min(b,c);
for(int i = 1;i <= d;i++) {
printf("01");
}
b -= d;
c -= d;
while(b--) {
printf("0");
}
while(c--) {
printf("1");
}
printf("\n");
}
}
2022/8/26 感谢 lisida0820 及时指出错误,将 max ( a , b ) \max(a,b) max(a,b) 改成 min ( a , b ) \min(a,b) min(a,b)