इस समस्या में, हमें n तत्वों की एक सरणी दी गई है। हमारा कार्य n*n आकार का एक अनुक्रम उत्पन्न करना है जिसके तत्व A के सभी तत्वों के साथ स्वयं के जोड़े का योग हैं। और इस योग सरणी के तत्वों का XOR प्रिंट करना है।
आइए एक उदाहरण से समस्या को समझते हैं,
इनपुट - 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.
इस समस्या को हल करने के लिए, हमें XOR के कुछ गुणों को जानने की आवश्यकता है। पहला, एक संख्या का उसी संख्या के साथ XOR 0 होता है। अब, नवगठित सरणी में, कई तत्व हैं जो समान हैं, तत्व a[i]+a[j] और a[j]+a[i] समान हैं इसलिए उनके XOR 0 होंगे। इसलिए, हम केवल 2*a[i] तत्वों के साथ बचे हैं, इसलिए हम सभी a[i] तत्वों का XOR लेंगे और इसे दो से गुणा करेंगे। यह हमारा अंतिम उत्तर होगा।
उदाहरण
हमारे एल्गोरिदम के कार्यान्वयन को दिखाने वाला प्रोग्राम
#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