কম্পিউটার টিউটোরিয়াল

সি++-এ একই সেট বিট সংখ্যক পরবর্তী বড় সংখ্যা বের করা

একটি সংখ্যা 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
  1. C++ প্রোগ্রাম: সংখ্যার সেট ও আনসেট বিটের সংখ্যা সমান কিনা চেক

  2. C++-এ সেট বিট কাউন্ট অনুযায়ী অ্যারে সর্ট করা

  3. C++-এ k সেট বিটস সহ একটি নম্বরকে ম্যাক্সিমাইজ করতে ন্যূনতম ফ্লিপ বের করা

  4. পাইথনে একই সেট বিট সংখ্যায় পরের বড় সংখ্যা বের করার প্রোগ্রাম