একটি সংখ্যা n দেওয়া থাকলে, n চেয়ে বড় এবং বাইনারি রিপ্রেজেন্টেশনে একই সংখ্যক সেট বিট (১) বিশিষ্ট সংখ্যা বের করতে হবে।
উদাহরণ
ইনপুট: 124 (বাইনারি: 1111100, ৫টি সেট বিট)
আউটপুট: 143 (বাইনারি: 10001111, ৫টি সেট বিট)
অ্যালগরিদম
nইনিশিয়ালাইজ করুন।getSetBitsCount()ফাংশন দিয়ে সেট বিট গণনা করুন।n+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 getNextGreaterWithSameSetBits(int n) {
int target = getSetBitsCount(n);
for (int i = n + 1; ; i++) {
if (getSetBitsCount(i) == target) return i;
}
}
int main() {
int n = 124;
cout << getNextGreaterWithSameSetBits(n) << endl; // 143
return 0;
}
আউটপুট
143