#2005. 海明码(Hamming.cpp)
海明码(Hamming.cpp)
题目描述
在计算机科学中,海明距离是衡量两个等长二进制字符串之间不同位数的一个标准。这个概念被广泛用于编码理论中,特别是在纠错码的设计中。现在,给定两个整数 和 ,要求你找出 个由 和 组成的编码,使得任意两个编码之间的海明距离至少为 。
海明距离的定义如下:对于两个编码,它们的二进制表示中不同的二进制位的个数就是它们的海明距离。例如,考虑以下两个十六进制数:
将它们的二进制表示对齐后比较,可以发现第 、、、 和 位不同,因此它们的海明距离是 。
你的任务是输出满足以下条件的 个编码:
- 它们的二进制表示中任意两两之间的海明距离都不少于 。
- 如果有多个符合条件的解,则要求输出的编码在十进制下的数值尽可能小。
输入格式
一行输入两个整数 和 ,用空格隔开。
输出格式
输出 个十进制表示的编码,按照数值从小到大排序,每行最多输出 个编码。如果有多个方案,要求输出使得二进制数值最小的解。
样例
16 3
0 7 25 30 42 45 51 52 75 76
82 85 97 102 120 127
说明/提示
请解释:"必须与其他所有的数相比,Hamming距离都符合要求,这个数才正确"
答:如样例输出, 和 , 和 , 和……比较都符合海明码,同样 和 , 和 , 和……比较也符合要求,以此类推。 就这样了。 题中至少有 个单位,意思就是大于等于 个单位的都可以。