Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

C++ Tìm số sao cho XOR với mảng cho trước bằng k

Cho mảng và số k. Tìm số x sao cho XOR của tất cả phần tử mảng với x bằng k. Ví dụ:

Input: arr={1,2,3,4,5}, k=10 → Output: 11
Giải thích: 1^2^3^4^5^11 = 10

Input: arr={12,23,34,56,78}, k=6 → Output: 73

Phương pháp giải

Tính XOR tổng của mảng: total = arr[0]^arr[1]^...^arr[n-1]. Cần total^x = k → x = total^k (vì A^B=C ↔ A^C=B).

Ví dụ minh họa

#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

Kết quả

11

Giải thích

Tính XOR tổng mảng, sau đó XOR với k để tìm x. Dựa trên tính chất: A^B=C ⇔ A^C=B.

Kết luận

Đã giải bài toán tìm x sao cho XOR mảng với x = k bằng tính chất XOR. Code C++ đơn giản O(n). Hy vọng hữu ích.