CF1400C Binary String Reconstruction
题目描述
考虑如下过程。你有一个长度为 $n$ 的二进制字符串(即每个字符都是 $0$ 或 $1$)$w$,以及一个整数 $x$。你需要构造一个新的长度为 $n$ 的二进制字符串 $s$。$s$ 的第 $i$ 个字符的选择方式如下:
- 如果 $w_{i-x}$ 存在且等于 $1$,那么 $s_i$ 为 $1$(形式化地说,如果 $i > x$ 且 $w_{i-x} = 1$,则 $s_i = 1$);
- 如果 $w_{i+x}$ 存在且等于 $1$,那么 $s_i$ 为 $1$(形式化地说,如果 $i + x \le n$ 且 $w_{i+x} = 1$,则 $s_i = 1$);
- 如果上述两个条件都不成立,则 $s_i$ 为 $0$。
现在给定整数 $x$ 和最终得到的字符串 $s$,请你还原原始字符串 $w$。
输入格式
第一行包含一个整数 $t$($1 \le t \le 1000$),表示测试用例的数量。
每个测试用例包含两行。第一行是结果字符串 $s$($2 \le |s| \le 10^5$,$s$ 的每个字符都是 $0$ 或 $1$)。第二行包含一个整数 $x$($1 \le x \le |s| - 1$)。
所有测试用例中所有字符串 $s$ 的总长度不超过 $10^5$。
输出格式
对于每个测试用例,输出一行答案:
- 如果不存在任何字符串 $w$ 能在上述过程中生成字符串 $s$,输出 $-1$;
- 否则,输出一个长度为 $|s|$ 的二进制字符串 $w$。如果有多种答案,输出其中任意一种即可。
说明/提示
由 ChatGPT 4.1 翻译