พิจารณาว่าเราต้องหารายการขององค์ประกอบ n รายการ แต่เรามีค่า XOR ของสององค์ประกอบที่ต่อเนื่องกันของอาร์เรย์จริง นอกจากนี้ยังให้องค์ประกอบแรกของของจริง ดังนั้นหากองค์ประกอบอาร์เรย์คือ a, b, c, d, e, f ดังนั้นอาร์เรย์ที่กำหนดจะเป็น a^b, b^c, c^d, d^e และ e^f
เมื่อให้หมายเลขแรกชื่อ a ซึ่งสามารถช่วยให้เราค้นหาตัวเลขทั้งหมดได้ หากเราต้องการค้นหาองค์ประกอบที่สองของอาร์เรย์จริง เราต้องดำเนินการ b =a ^ arr[i] สำหรับองค์ประกอบที่สอง c =b ^ arr[1] เป็นต้น
ตัวอย่าง
#include<iostream> using namespace std; void findActualElements(int a, int arr[], int n) { int actual[n + 1]; actual[0] = a; for (int i = 0; i < n; i++) { actual[i + 1] = arr[i] ^ actual[i]; } for (int i = 0; i < n + 1; i++) cout << actual[i] << " "; } int main() { int arr[] = { 12, 5, 26, 7 }; int n = sizeof(arr) / sizeof(arr[0]); int a = 6; findActualElements(a, arr, n); }
ผลลัพธ์
6 10 15 21 18