এই সমস্যাতে, দুটি ধনাত্মক পূর্ণসংখ্যা n এবং k দেওয়া থাকে। আমাদের কাজ হল ১ থেকে n পর্যন্ত সর্বোচ্চ kটি সংখ্যা ব্যবহার করে সম্ভব সর্বোচ্চ XOR মান বের করা।
উদাহরণ
ইনপুট: n = 5, k = 2
আউটপুট: 7
ব্যাখ্যা
১ থেকে ৫ পর্যন্ত সংখ্যা: 1, 2, 3, 4, 5 সম্ভাব্য XOR জোড়া: 1^2=3, 1^3=2, 1^4=5, 1^5=4 2^3=4, 2^4=6, 2^5=7 3^4=7, 3^5=6 4^5=1 সর্বোচ্চ হল ৭।
লজিক
যেকোনো সংখ্যার সমস্ত বিট ১ হলে XOR মান সর্বোচ্চ হয়। যেমন ৫-এর বাইনারি ১০১, সর্বোচ্চ XOR হবে ১১১ অর্থাৎ ৭। তবে k = 1 হলে সর্বোচ্চ XOR হল n নিজেই।
C++ প্রোগ্রাম উদাহরণ
#include <iostream>
using namespace std;
int maxXor(int n, int k) {
if (k == 1) return n;
int result = 1;
while (result <= n) result <<= 1;
return result - 1;
}
int main() {
int n = 5, k = 2;
cout << "The maximum XOR of " << k << " numbers from 1 to " << n << " is " << maxXor(n, k);
return 0;
}
আউটপুট
The maximum XOR of 2 numbers from 1 to 5 is 7