সমস্যা বিবরণ
দুটি পূর্ণসংখ্যা n এবং m দেওয়া আছে। আমাদের কাজ হল বাইনারি রিপ্রেজেন্টেশনে nটি সেট বিট (১) এবং mটি আনসেট বিট (০) থাকা সর্বোচ্চ সংখ্যা বের করা।
উদাহরণ
ইনপুট: n = 3, m = 1 আউটপুট: 14 ব্যাখ্যা: বাইনারি 1110 (৩টি ১, ১টি ০) = 14
সমাধানের পদ্ধতি
(n+m) বিট সেট করা সংখ্যা: (1 << (n+m)) - 1। তারপর শেষ m বিট টগল অফ করা: XOR with ((1 << m) - 1)।
প্রোগ্রাম উদাহরণ
#include <iostream>
using namespace std;
int findLargestNumber(int n, int m) {
int maxNum = (1 << (n+m)) - 1;
if(m==0) return maxNum;
int toggle = (1 << m) - 1;
return maxNum ^ toggle;
}
int main() {
int n=5, m=2;
cout << "সর্বোচ্চ সংখ্যা: " << findLargestNumber(n,m);
return 0;
}
আউটপুট
সর্বোচ্চ সংখ্যা: 124