从 Python 生成的列表中找出特定元素的 XOR 值的程序

假设我们有一个包含自然数的列表。现在从该列表中,我们删除其二进制表示中包含两个连续 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

猜你喜欢