C++程式查詢與給定陣列異或和為給定數字k的數字


為了解決一個問題,給定條件下,我們需要找到一個數字,使得該數字與給定陣列的異或和等於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

在這個程式中,我們將使用異或運算的性質,如果A^B = C,那麼A^C = B,我們將把這個性質應用到這個問題中。

解決方法

在這個方法中,我們將使用上面異或運算子的性質。對於這個問題,我們遍歷陣列,然後如果我們將這個數字與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

上述方法的解釋

在這個方法中,我們將使用異或運算子的一些性質,因此,我們將簡單地遍歷陣列,然後找到整個陣列的異或和,然後我們將該異或和與k進行異或運算,得到答案,然後列印我們的答案。

結論

在本教程中,我們解決了查詢與給定陣列異或和為給定數字k的數字的問題。我們還學習了這個問題的C++程式和完整的解決方法(常規方法)。我們可以用其他語言(如C、Java、Python和其他語言)編寫相同的程式。希望本教程對您有所幫助。

更新於: 2021年11月25日

399 次檢視

開啟你的職業生涯

透過完成課程獲得認證

立即開始
廣告