Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมค้นหาผลรวม XOR ของคู่ทั้งหมดระดับบิตและใน Python


สมมติว่าเรามีอาร์เรย์สองอาร์เรย์ arr1 และ arr2 ผลรวม XOR ของรายการคือ XOR ระดับบิตขององค์ประกอบทั้งหมด หากรายการมีองค์ประกอบเพียงองค์ประกอบเดียว ผลรวม XOR จะเป็นองค์ประกอบนั้นเอง ตอนนี้ ให้พิจารณาว่ารายการมีผลลัพธ์เป็น arr1[i] และ arr2[j] (ระดับบิต AND) สำหรับทุกคู่ดัชนี (i, j) โดยที่ 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 และ 2, 4 และ 6] =[0, 4, 2, 2, 0, 4] ตอนนี้ผลรวม XOR คือ [0 XOR 4 XOR 2 XOR 2 XOR 0 XOR 4] =0

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • xor1 :=0

  • xor2 :=0

  • สำหรับแต่ละ a ใน arr1 ทำ

    • xor1 :=xor1 XOR ก

  • สำหรับแต่ละ a ใน arr2 ทำ

    • xor2 :=xor2 XOR ก

  • คืนค่า xor1 และ 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