Binary String Constructing
题意:
给出a,b,x,构造一个01串,有a个0,b个1。这个01串刚好有x个 使得 即相邻位不同
分析:
对于x,我们很容易就可以想到先输出 对0和1(n对0和1交错出现可以提供2*n-1个符合题意的 ),然后将剩余的0和剩余的1连续输出(提供1个符合条件的 ,这样就刚好是x个符合条件的 了,需要注意的是,我们要优先将个数多的放在前面,例如,有10个1,5个0的话,我们先输出 个“10”,否则,输出 个“01”)。
code:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int main(){
int a,b,x,n;
char u,v;
cin >> a >> b >> x;
n = a + b;
if(a > b){
u = '0';
v = '1';
}
else{
u = '1';
v = '0';
swap(a,b);
}
for(int i = 0; i < x / 2; i++){
cout << u << v;
a--;
b--;
}
if(x % 2 == 0){
while(b--) cout << v;
while(a--) cout << u;
}
else{
while(a--) cout << u;
while(b--) cout << v;
}
return 0;
}