假设我们有一个包含自然数的列表。现在从该列表中,我们删除其二进制表示中包含两个连续 1 的所有数字,并生成另一个名为 Z 的列表。现在我们得到另一个包含一些整数值的列表“input_list”。我们必须从 Z 中找出其索引在 input_list 中指定的指定元素的 XOR 值。
因此,如果输入类似于 input_list = [3, 4, 5],那么输出将为 9。
在 Z 的索引 3、4 和 5 中;值为 4、5 和 8。因此,4 XOR 5 XOR 8 = 9。
让我们看看以下实现以获得更好的理解 -
def zeck_num(k, f_list): res = 0 for i in range(len(f_list)-1,-1,-1): if k >= f_list[i]: res += 2**i k -= f_list[i] return res def solve(input_list): MOD = 10**9+7 max_val = 10**18 f_list = [1,2] while f_list[-1] <= max_val: f_list.append(f_list[-1] + f_list[-2]) res = 0 for index in input_list: res ^= zeck_num(index, f_list) return res % MOD print(solve([3, 4, 5]))
[3, 4, 5]输出结果
9