কম্পিউটার

C++-এ সর্বাধিক K সেট বিট থাকা X-এর থেকে কম বড় সংখ্যা


এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম লিখতে যাচ্ছি যেটি সবচেয়ে বড় সংখ্যা খুঁজে বের করে যা x এর চেয়ে কম এবং সর্বাধিক k সেট বিট থাকা উচিত।

আসুন সমস্যা সমাধানের পদক্ষেপগুলি দেখি৷

  • সংখ্যা x এবং k শুরু করুন।
  • এক্স নম্বরে সেট বিটগুলি খুঁজুন।
  • একটি লুপ লিখুন যা x - k.
      সেট বিট গণনা পুনরাবৃত্তি করে
    • x এর মান x &(x - 1) দিয়ে আপডেট করুন।
  • এক্স ফেরত দিন।

উদাহরণ

আসুন কোডটি দেখি।

#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++ এ প্রদত্ত সংখ্যার কম বা সমান

  2. C++ এ Y এর চেয়ে কম সংখ্যা সহ সেটের ন্যূনতম সংখ্যা

  3. একটি সংখ্যার বিকল্প প্যাটার্নে বিট আছে কিনা তা পরীক্ষা করুন - C++ এ 1 সেট করুন

  4. C++ এ সেট বিটের গণনা অনুসারে একটি অ্যারে সাজান