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++代码

Open Compiler
#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

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

上述方法的解释

在这个方法中,我们将使用异或运算符的一些性质,因此,我们将简单地遍历数组,然后找到整个数组的异或和,然后我们将该异或和与k进行异或运算,得到答案,然后打印我们的答案。

结论

在本教程中,我们解决了查找与给定数组异或和为给定数字k的数字的问题。我们还学习了这个问题的C++程序和完整的解决方法(常规方法)。我们可以用其他语言(如C、Java、Python和其他语言)编写相同的程序。希望本教程对您有所帮助。

更新于: 2021年11月25日

399 次查看

开启你的职业生涯

通过完成课程获得认证

立即开始
广告