เพื่อแก้ปัญหาที่กำหนด เราถูกมอบหมายให้หาตัวเลขที่ทำให้ XOR Sum ของอาร์เรย์ที่กำหนดกับตัวเลขนั้นเท่ากับ 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 Operator ตอนนี้สำหรับปัญหานี้ เราจะวนลูปผ่านอาร์เรย์ แล้วถ้าเรา XOR ผลรวมกับ k นั่นจะเป็นคำตอบของเรา
ตัวอย่าง
โค้ด C++ สำหรับวิธีการข้างต้น
#include <bits/stdc++.h>
using namespace std;
int main(){
int arr[] = { 1, 2, 3, 4, 5 };
int n = sizeof(arr) / sizeof(int);
int k = 10;
int answer = 0;
for(int i = 0; i < n; i++)
answer ^= arr[i];
answer ^= k;
cout << answer << "\n";
return 0;
}
ผลลัพธ์
11
คำอธิบายสำหรับวิธีการข้างต้น
ในวิธีนี้ เราจะใช้คุณสมบัติของ XOR Operator เราแค่วนลูปผ่านอาร์เรย์หา XOR Sum ของทั้งอาร์เรย์ แล้ว XOR ผลรวมนั้นกับ k จะได้คำตอบ แล้วพิมพ์คำตอบของเรา
สรุป
ในบทช่วยสอนนี้ เราแก้ปัญหาการหาตัวเลขที่ XOR Sum กับอาร์เรย์ที่กำหนดเท่ากับ k เรายังได้เรียนรู้โปรแกรม C++ และวิธีแก้ปัญหา ซึ่งสามารถเขียนในภาษาอื่น เช่น C, Java, Python ได้ หวังว่าจะเป็นประโยชน์