ในการแก้ปัญหาที่กำหนดให้ เราต้องค้นหาตัวเลขที่ผลรวม XOR ของอาร์เรย์ที่กำหนดด้วยตัวเลขนั้นเท่ากับ k เป็นต้น
Input: arr[] = {1, 2, 3, 4, 5}, k = 10 Output: 11 Explanation: 1 ^ 2 ^ 3 ^ 4 ^ 5 ^ 11 = 10 Input: arr[] = { 12, 23, 34, 56, 78 }, k = 6 Output: 73
ในโปรแกรมนี้ เราจะใช้คุณสมบัติของ xor ถ้า A^B =C และ A^C =B เราจะนำสิ่งนี้ไปใช้กับปัญหานี้
แนวทางในการหาแนวทางแก้ไข
ในแนวทางนี้ เราจะใช้คุณสมบัติข้างต้นของตัวดำเนินการ xor ในตอนนี้ สำหรับปัญหานี้ ตอนนี้เราสำรวจผ่านอาร์เรย์ แล้วถ้าเรา x หรือตัวเลขด้วย k นั่นแหละคือคำตอบของเรา
ตัวอย่าง
รหัส C++ สำหรับแนวทางข้างต้น
#include <bits/stdc++.h> using namespace std; int main(){ int arr[] = { 1, 2, 3, 4, 5 }; // given array int n = sizeof(arr) / sizeof(int); // size of our array int k = 10; // given k int answer = 0; for(int i = 0; i < n; i++) // traversing the array for // xor sum answer ^= arr[i]; answer ^= k; // XORing with k to get our answer cout << answer << "\n"; // printing our answer return 0; }
ผลลัพธ์
11
คำอธิบายสำหรับแนวทางข้างต้น
ในแนวทางนี้ เราจะใช้คุณสมบัติบางอย่างของตัวดำเนินการ xor เพื่อการนั้น เราก็แค่สำรวจผ่านอาร์เรย์ แล้วหาผลรวม xor ของอาร์เรย์ทั้งหมด จากนั้นเรา xor ผลรวม xor นั้นด้วย k และนั่น คำตอบแล้วเราก็พิมพ์คำตอบของเรา
บทสรุป
ในบทช่วยสอนนี้ เราจะแก้ปัญหาการค้นหา Number ที่ผลรวม XOR กับอาร์เรย์ที่ระบุเป็นตัวเลข k ที่กำหนด นอกจากนี้เรายังได้เรียนรู้โปรแกรม C++ สำหรับปัญหานี้และแนวทางที่สมบูรณ์ (ปกติ) ซึ่งเราแก้ไขปัญหานี้ เราสามารถเขียนโปรแกรมเดียวกันในภาษาอื่นๆ เช่น C, java, python และภาษาอื่นๆ เราหวังว่าคุณจะพบว่าบทช่วยสอนนี้มีประโยชน์