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

সি++-এ mটি ১ এবং m-1টি ০ বিশিষ্ট বাইনারি প্রতিনিধিত্ব वाली সর্ববৃহৎ সংখ্যা

বাইনারি রিপ্রেজেন্টেশনে mটি ১ এবং m-1টি ০ থাকা এমন সবচেয়ে বড় সংখ্যা বের করতে হবে যা n চেয়ে ছোট।

প্যাট্রন: (2ᵐ - 1) * 2^(m-1) = 111...1000...0 (mটি ১, m-1টি ০)

উদাহরণ

ইনপুট: n = 654 → আউটপুট: 496

(৪৯৬ বাইনারি: 111110000 = ৫টি ১, ৪টি ০)

অ্যালগরিদম

  • bits = 2, result = 1।
  • লুপ: val = (2^bits - 1) * 2^(bits-1)।
  • val < n হলে result = val।
  • bits++ করুন।

সি++ ইমপ্লিমেন্টেশন

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

long long getLargestNumber(long long n) {
    long long bits = 2, result = 1, val = 1;
    while (val < n) {
        val = ((1LL << bits) - 1) * (1LL << (bits - 1));
        if (val < n) result = val;
        bits++;
    }
    return result;
}

int main() {
    long long n = 654;
    cout << getLargestNumber(n) << endl; // 496
    return 0;
}

আউটপুট

496
  1. দেওয়া অঙ্কগুলো দিয়ে গঠিত সর্বোচ্চ সংখ্যা খুঁজে বের করা C++-তে

  2. C++-এ আপার ডায়াগোনালকে লোয়ার ডায়াগোনালের সাথে সোয়াপ করা

  3. C++-এ অ্যারিথমেটিক নম্বর

  4. C++-এ CHAR_BIT