可变位数是一个0或更多位数的数组。所以,[0, 1]
是将可变比特数,但这样的[]
。
编写一个函数或程序,给定一个非负整数,该函数或程序将返回可变数量的位,以使每个整数与数组具有一对一(双射)映射。
此类映射的数量是无限的,您可以随意构造一个,但必须是一对一的。对于任意大小的整数,映射在概念上必须为一对一,但是如果由于首选语言(例如C的类型)的数值限制而导致对大整数的实现失败,则可以int
。
作为不是一对一映射的示例,只需列出整数的二进制数字即可。在这样的系统中5变成[1, 0, 1]
(或0b101
),但不是一对一的,因为0b0101
或[0, 1, 0, 1]
也意味着5。
显而易见,如果跳过整数(例如,它不适用于5),则映射不是一对一的,但我想明确指出,跳过可变位数组也不是一个一对一。您必须映射到每个可能的可变位数组,包括[]
。
以字节为单位的最短代码获胜。