C++中数组每对元素之和的异或
在这个问题中,我们给定一个包含n个元素的数组。我们的任务是生成一个大小为n*n的序列,其元素是A的所有元素对与其自身的和。并打印由此形成的和数组的异或元素。
让我们举个例子来理解这个问题:
输入 − A (1, 4, 5)
输出 − 0
解释 −
B (1+1, 1+4, 1+5, 4+1, 4+4, 4+5, 5+1, 5+4, 5+5) B(2,5,6,5,8,9,6,9,10) Xor of all values = 2^5^6^5^8^9^6^9^10 = 0.
为了解决这个问题,我们需要了解异或的一些性质。一个数字与自身的第一次异或结果为0。现在,在新生成的数组中,有多个元素是相同的,元素a[i]+a[j]和a[j]+a[i]是相同的,因此它们的异或结果将为0。所以,我们只剩下2a[i]个元素,因此我们将取所有a[i]元素的异或,并将其乘以二。这将是我们的最终答案。
示例
程序演示了我们算法的实现
#include <iostream>
using namespace std;
int findSumXor(int arr[], int n){
int XOR = 0 ;
for (int i = 0; i < n; i++) {
XOR = XOR ^ arr[i];
}
return XOR * 2;
}
int main(){
int arr[3] = { 2, 4, 7 };
int n = sizeof(arr) / sizeof(arr[0]);
cout<<"The xor of the sum pair of elements of the array is\t"<<findSumXor(arr, n);
return 0;
}输出
The xor of the sum pair of elements of the array is 2
广告
数据结构
网络
关系型数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP