misc#P23014. Binary Number

Binary Number

题目描述

Markyyz 正在学习二进制数。他的作业里有一个简单的问题。

给定一个二进制数 s1ns_{1\sim n}s1s_{1} 是最高位,sns_{n} 是最低位)。你需要执行恰好 kk 次操作:任意选择一个区间 [l,r][l,r] (1lrn)(1\leq l\leq r\leq n),然后翻转 sl,sl+1,,srs_{l},s_{l + 1},\ldots ,s_{r},换句话说,对于所有 i[l,r]i\in [l,r],如果 sis_{i}00 则变为 11,如果 sis_{i}11 则变为 00。问经过 kk 次操作后,能得到的最大的二进制数是多少。

Markyyz 发现无用的算法在这个问题上毫无用处,于是他向 SPY 求助。SPY 起初看轻了这个问题,但最终却得到了 WA(错误答案)。你能帮他们找到正确的解法吗?

输入格式

输入的第一行包含一个整数 TT (1T6×104)(1\leq T\leq 6\times 10^{4}),表示测试用例的数量。

对于每个测试用例:

第一行包含两个整数 n,kn, k (1n105,0k1018)(1\leq n\leq 10^{5},0\leq k\leq 10^{18})

第二行包含一个二进制数 s1ns_{1\sim n}s1=1,i[2,n]:si{0,1}s_{1} = 1,\forall i\in [2,n]:s_{i}\in \{0,1\})。

保证所有测试用例的 n2.5×106\sum n\leq 2.5\times 10^{6}

输出格式

每个测试用例输出一行,一个长度为 nn 的字符串,表示经过 kk 次操作后能得到的最大二进制数。

2
8 2
10100101
5 233333333333333333
11101
11111101
11111