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

সি++-এ X-এর চেয়ে ছোট এবং সর্বোচ্চ K সেট বিট वाली সংখ্যা

এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম লিখব যা প্রদত্ত X-এর চেয়ে ছোট এবং সর্বোচ্চ K সংখ্যক সেট বিট वाली সবচেয়ে বড় সংখ্যা খুঁজে বের করবে।

সমস্যা সমাধানের ধাপসমূহ

  • সংখ্যা x এবং k ইনিশিয়ালাইজ করুন।
  • সংখ্যা x-এ কতগুলো সেট বిట আছে তা বের করুন।
  • একটি লুপ চালান যা (x-এর সেট বিটের সংখ্যা - k) বার ইটারেট করবে।
    • প্রতিটি ইটারেশনে x-কে x & (x - 1) দিয়ে আপডেট করুন।
  • শেষে x রিটার্ন করুন।

উদাহরণ কোড

#include <bits/stdc++.h>
using namespace std;

int largestNumberWithKBits(int x, int k) {
    int set_bit_count = __builtin_popcount(x);
    if (set_bit_count <= k) {
        return x;
    }
    int diff = set_bit_count - k;
    for (int i = 0; i < diff; i++) {
        x &= (x - 1);
    }
    return x;
}

int main() {
    int x = 65, k = 2;
    cout << largestNumberWithKBits(x, k) << endl;
    return 0;
}

আউটপুট

উপরের কোডটি রান করলে নিচের ফলাফল পাওয়া যাবে:

65

নिष्कর্ষ

এই টিউটোরিয়াল সম্পর্কে আপনার যেকোনো প্রশ্ন থাকলে কমেন্ট সেকশনে জানাতে পারেন।

  1. C++-এ দেওয়া সংখ্যার চেয়ে ছোট বা সমান সর্বোচ্চ স্পেশাল প্রাইম (Special Prime) খুঁজে বের করা

  2. C++-এ Y-র চেয়ে ছোট নম্বর দিয়ে মিনিমাম সেট বের করা

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

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