সমস্যা বিবরণ
একটি রেঞ্জ [L, R] দেওয়া আছে, কাজ হল একটি যুগল (X, Y) খুঁজে বের করা যাতে L ≤ X < Y ≤ R এবং X & Y সমস্ত সম্ভাব্য যুগলের মধ্যে সর্বোচ্চ হয়, তারপর খুঁজে বের করা যুগলের বিটওয়াইজ AND প্রিন্ট করা।
উদাহরণ
যদি L = 1 এবং R = 10 হয় তবে সর্বোচ্চ বিটওয়াইজ AND মান হল ৮ যা নিচের মতো তৈরি হয়:
1000 # 8-এর বাইনারি রিপ্রেজেন্টেশন Bitwise AND 1001 # 9-এর বাইনারি রিপ্রেজেন্টেশন ---- 1000 # চূড়ান্ত ফলাফল
অ্যালগরিদম
L থেকে R পর্যন্ত ইটারেট করে প্রতিটি সম্ভাব্য যুগলের জন্য বিটওয়াইজ AND চেক করুন এবং শেষে সর্বোচ্চ মান প্রিন্ট করুন।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int getMaxBitwiseAndValue(int L, int R) {
int maxValue = L & R;
for (int i = L; i < R; ++i) {
for (int j = i + 1; j <= R; ++j) {
maxValue = max(maxValue, (i & j));
}
}
return maxValue;
}
int main() {
int L = 1, R = 10;
cout << "Maximum value = " << getMaxBitwiseAndValue(L, R) << endl;
return 0;
}
আউটপুট
Maximum value = 8