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

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

একটি সংখ্যা 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
  1. লিংকড লিস্টে বাইনারি নম্বর থেকে ইন্টিজার কনভার্সন C++-এ

  2. দেওয়া সংখ্যার সেট বিট ব্যবহার করে ন্যূনতম সংখ্যা বের করা C++-তে

  3. C++-এ একটি সংখ্যার বাইনারিতে অল্টারনেট প্যাটার্ন আছে কিনা তা যাচাই করা (সেট ১)

  4. C++-এ একটি ইন্টিজারর ওন'স কমপ্লিমেন্ট খুঁজে বের করা