এই সমস্যায়, আমাদের 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 ০। এখন, নতুন তৈরি অ্যারেতে একাধিক এলিমেন্ট একই আছে, এলিমেন্ট a[i]+a[j] এবং a[j]+a[i] একই তাই তাদের XOR ০ হবে। তাই, আমরা শুধু 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