F. Binary String Reconstruction

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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秦三码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值