Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ หาสมาชิกของอาร์เรย์จากค่า XOR ของสมาชิกติดกัน

พิจารณาว่าเราต้องหารายการ 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