#P1127. 校验和
校验和
校验和
题目描述
一天,brz 在计算机网络的课堂上学习了校验和,就是将一串二进制信息中的 的个数作为校验码,将校验码转化成二进制数放在信息的最后作为校验位。 学习到新知识的 brz 迫不及待开始写代码尝试,写完发送方和接收方后,他惊奇的发现明明校验和没有求错,但是接收方校验后发现信息始终有误。 经过仔细的检查后,发现接收方计算校验和时,居然把所有的 ,包括校验码中的 都算上了,那么自然大概率是不会和发送方发送过来的校验码相同的。 但是 brz 突发奇想,校验码是多少时,能够使得这个接收方校验成功呢? 具体来说,现在你有一串 位的二进制信息 ,你需要构造一个 位的二进制数 ,将 接在 后面得到要发送的信息 。现在接收方得到了这个 ,计算出了其中 的个数(二进制下) (保留 位二进制,如果有大于 位的则舍弃),要使得 与 相等。请问 是多少。
输入格式
第一行包含一个正整数 ,表示 brz 的问题数量。 对于每个问题,第一行包含两个整数 。第二行包含一个长度为 的 串 。 保证对于所有的问题,。
输出格式
每个问题输出一行,表示长度为 的合法的 ,如果有多个满足要求的答案,则只需要输出最小的 。如果不存在合法的 ,则输出一行 "None"(不包含引号)。
样例 #1
样例输入 #1
2
1 1
1
1 2
1
样例输出 #1
None
10
提示
对于样例中第二组数据, 都是合法的 B,但是 更小,所以只输出 。