视频原创标识开通,害我白激动了,也不知道我的图文原创声明什么时候能开通。
翻译
二进制字符串构建
有一些二进制字符串,所有的长度为 2 的子串都被书写出来,每一对子串计算 1 的数量。
给你三个数字:
- n0 - 有 0 个 1 的子串对数量
- n1 - 有 1 个 1 的子串对数量
- n2 - 有 2 个 1 的子串对数量
你的任务是根据给出的 n0, n1, n2 构造出符合要求的答案,可以保证这三个数字的和大于 1 ,并且保证可以构造出答案。
输入格式
第一行包含一个整数 t,表示测试用例的组数。
每组测试用例输入一行三个数字,n0 n1 n2 用空格分割。
输出格式
输出 t 行,每行是每组测试用例的答案
分析
又是一道简单的构造题。
- n0 的和 n2 的字符串应该挨着,这样中间就有一个n1
- 构造 n1 前应该特判,如果 n0 和 n2 均为0,则可以自由构建,否则需要依据尾部数字构建
例如:1 3 5
- 首先构建 00
- 然后构建 00111111 这样 1 和 5 就出来了并且带出了 一个 01
- 接着构建 0011111101 只需要补全两个 n1 即可
代码(PyPy3)
# https://codeforces.com/problemset/problem/1352/G
import sys
# sys.stdin = open(r"./file/input.txt", 'r')
# sys.stdout = open(r"./file/output.txt", 'w')
t = int(input())
for _ in range(t):
arr = list(map(int, input().split(" ")))
a = arr[0]
b = arr[1]
c = arr[2]
result = ""
end = -1
if a > 0:
result += "0" * (a + 1)
end = 0
if c > 0:
result += "1" * (c + 1)
end = 1
if end == -1:
result = "1"
end = 1
if "01" in result:
b -= 1
for _ in range(b):
if end == 1:
result += "0"
else:
result += "1"
end = 1 - end
print(result)
更多代码尽在 https://github.com/Tconan99/Codeforces
by 费城的二鹏 2020.05.14 长春
网友评论