একটি সংখ্যা n দেওয়া থাকলে, n চেয়ে বড় এবং বাইনারিতে n চেয়ে একটি বেশি সেট বিট (১) বিশিষ্ট সংখ্যা বের করতে হবে।
উদাহরণ
ইনপুট: 124 (বাইনারি: 1111100, ৫টি ১)
আউটপুট: 125 (বাইনারি: 1111101, ৬টি ১)
অ্যালগরিদম
nএর সেট বিট গণনা করুন।n+1থেকে শুরু করে লুপ চালান।- যখন সেট বিট =
target + 1পাওয়া যায়, ফেরত দিন।
সি++ ইমপ্লিমেন্টেশন
#include <bits/stdc++.h>
using namespace std;
int getSetBitsCount(int n) {
int count = 0;
while (n) { if (n & 1) count++; n >>= 1; }
return count;
}
int getNextGreaterWithOneMoreSetBit(int n) {
int target = getSetBitsCount(n);
for (int i = n + 1; ; i++) {
if (getSetBitsCount(i) == target + 1) return i;
}
}
int main() {
int n = 124;
cout << getNextGreaterWithOneMoreSetBit(n) << endl; // 125
return 0;
}
আউটপুট
125