Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm tổng XOR của tất cả các cặp bitwise AND trong Python

Giả sử chúng ta có hai mảng arr1 và arr2. Tổng XOR của một danh sách là XOR theo từng bit của tất cả các thành phần của nó. Nếu danh sách chỉ có một phần tử, thì tổng XOR của nó sẽ là chính phần tử đó. Bây giờ, hãy xem danh sách có kết quả là arr1 [i] AND arr2 [j] (bitwise AND) cho mọi cặp chỉ mục (i, j) trong đó 0 <=i <độ dài của arr1 và 0 <=j <độ dài của arr2. Chúng ta phải tìm tổng XOR của danh sách đó.

Vì vậy, nếu đầu vào giống như arr1 =[5,3,4] arr2 =[2,6], thì đầu ra sẽ là 0 vì danh sách là [5 VÀ 2, 5 VÀ 6, 3 VÀ 2, 3 VÀ 6 , 4 VÀ 2, 4 VÀ 6] =[0, 4, 2, 2, 0, 4], bây giờ tổng XOR là [0 XOR 4 XOR 2 XOR 2 XOR 0 XOR 4] =0

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • xor1:=0

  • xor2:=0

  • đối với mỗi a trong arr1, hãy thực hiện

    • xor1:=xor1 XOR a

  • đối với mỗi a trong arr2, hãy thực hiện

    • xor2:=xor2 XOR a

  • trả về xor1 VÀ xor2

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau đây để hiểu rõ hơn

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))

Đầu vào

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

Đầu ra

0