F. Binary String Reconstruction
F. Binary String Reconstruction
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
For some binary string ss (i.e. each character sisi is either '0' or '1'), all pairs of consecutive (adjacent) characters were written. In other words, all substrings of length 22 were written. For each pair (substring of length 22), the number of '1' (ones) in it was calculated.
You are given three numbers:
- n0n0 — the number of such pairs of consecutive characters (substrings) where the number of ones equals 00;
- n1n1 — the number of such pairs of consecutive characters (substrings) where the number of ones equals 11;
- n2n2 — the number of such pairs of consecutive characters (substrings) where the number of ones equals 22.
For example, for the string s=s="1110011110", the following substrings would be written: "11", "11", "10", "00", "01", "11", "11", "11", "10". Thus, n0=1n0=1, n1=3n1=3, n2=5n2=5.
Your task is to restore any suitable binary string ss from the given values n0,n1,n2n0,n1,n2. It is guaranteed that at least one of the numbers n0,n1,n2n0,n1,n2 is greater than 00. Also, it is guaranteed that a solution exists.
Input
The first line contains an integer tt (1≤t≤10001≤t≤1000) — the number of test cases in the input. Then test cases follow.
Each test case consists of one line which contains three integers n0,n1,n2n0,n1,n2 (0≤n0,n1,n2≤1000≤n0,n1,n2≤100; n0+n1+n2>0n0+n1+n2>0). It is guaranteed that the answer for given n0,n1,n2n0,n1,n2 exists.
Output
Print tt lines. Each of the lines should contain a binary string corresponding to a test case. If there are several possible solutions, print any of them.
Example
input
Copy
7 1 3 5 1 1 1 3 9 3 0 1 0 3 1 2 0 0 3 2 0 0
output
Copy
1110011110 0011 0110001100101011 10 0000111 1111 000
=========================================================================
本来是打算先构造0,再构造01,再构造11的,但是发现这样会有根本无法构造的情况
考虑构造0
0000000000
接下来在两边进行扩展
000000000001
这样就多了一个01
剩余的01全部放在左边
1010101000000000001
剩余的11全部放在右边
10101000000000000001111111111111
这样的构造就能够互不影响
#include<iostream>
#include<cstdio>
#include<cstring>
# include<iomanip>
#include<algorithm>
#define mo 998244353;
using namespace std;
typedef long long int ll;
int main()
{
int t;
cin>>t;
while(t--)
{
int a,b,c;
cin>>a>>b>>c;
string s="";
int check=0;
if(c)
{
for(int i=1;i<=c+1;i++)
{
s+="1";
}
check=1;
}
int flag=1;
if(b)
{
b--;
s=s+"0";
if(!check)
s="1"+s;
flag=0;
}
if(b)
{
for(int i=1;i<=b;i++)
{
if(i%2)
{
s="0"+s;
}
else
{
s="1"+s;
}
}
}
if(a)
{
for(int i=1;i<=a+flag;i++)
{
s+="0";
}
}
cout<<s<<endl;
}
return 0;
}