造数
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目背景
“Hamming距离”是指对于两个编码,他们二进制表示法中的不同二进制位的数目。看下面的两个编码 0x554 和 0x234(十六进制数)
0x554 = 0101 0101 0100
0x234 = 0010 0011 0100
因为有五个对应二进制位不同,所以“Hamming距离”是 。
题目描述
有一个可重集合,包含 N 个二进制数。每个二进制数的长度均为 L。
小明可以进行以下操作:从集合中选择两次,每次任意选择一个数(可以两次均选择同一个元素),将它们进行异或,得到的数添加到集合中。
小明可以重复以上操作任意次。
小明希望通过若干次(至少一次)操作,能够在异或运算时得到二进制数 D。当然,小明也可能永远无法通过异或得到 D。
现在,小明想知道,他可以得到的与 D 的海明距离最小的二进制数是什么?
如果有多个二进制数满足题目要求,请你求出小明操作次数最少情况下可以得到的那一个。如果仍然有多个,请你求出值最小的那一个。
输入格式
第一行:两个整数 L, N
第二行:一个长度为 L 的二进制数 D
接下来 N 行,每行一个长度为 L 的二进制数,描述集合初始时的元素。
输出格式
第一行:一个整数,表示操作次数。
第二行:一个长度为 L 的二进制数,表示可以得到的与 D 海明距离最小的那个二进制数。
样例1输入
3 2
100
100
000
样例1输出
1
100
样例2输入
3 2
110
100
001
样例2输出
2
100
数据范围
100% 的数据:1 ≤ N ≤ 100, 1 ≤ L ≤ 16