在Python中查找所有成对的按位AND的XOR总和的程序

在Python中查找所有成对的按位AND的XOR总和的程序

假设我们有两个数组arr1和arr2。 列表的异或和是其所有元素的按位异或。 如果列表只有一个元素,则其异或和将是元素本身。 现在,考虑该列表具有每个索引对(i,j)的arr1 [i] AND arr2 [j](按位AND)的结果,其中0 ≦ i<arr1的长度且0≦j<arr2的长度。 我们必须找到该列表的XOR总和。

因此,如果输入是arr1 = [5,3,4] arr2 = [2,6],则输出将为0,因为列表为[5 AND 2,5 AND 6,3 AND 2,3 AND 6,4 AND 2,4 AND 6] =[0, 4, 2, 2, 0, 4],现在XOR总和为[0 XOR 4 XOR 2 XOR 2 XOR 0 XOR 4] = 0

要解决这个问题,我们将按照以下步骤进行 –

  • xor1:= 0

  • xor2:= 0

  • 对于arr1中的每个a,执行以下操作

    • xor1:= xor1 XOR a
  • 对于arr2中的每个a,执行以下操作
    • xor2:= xor2 XOR a
  • 返回xor1 AND xor2

例子

让我们看一下以下实现,以获得更好的理解

def solve(arr1, arr2):
   xor1 = 0
   xor2 = 0
   for a in arr1:
      xor1 ^= a
   for a in arr2:
      xor2 ^= a
   return xor1 & xor2

arr1 = [5,3,4]
arr2 = [2,6]
print(solve(arr1, arr2))

输入

[5, 3, 4],[2, 6]

输出

0

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程