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

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


সমস্যা বিবরণ

একটি অনসাইনড সংখ্যা দেওয়া আছে, সেই সংখ্যার বিট ব্যবহার করে তৈরি হওয়া ন্যূনতম সংখ্যা বের করুন।

উদাহরণ

ইনপুট = 10 হলে উত্তর ৩।

১০-এর বাইনারি রিপ্রেজেন্টেশন ১০১০ এবং ২টি সেট বিট দিয়ে ন্যূনতম সংখ্যা ০০১১ অর্থাৎ ৩।

অ্যালগরিদম

1. সেট বিটের সংখ্যা গণনা করুন।
2. (সেট বিটের সংখ্যা) ^ 2 - 1 ন্যূনতম সংখ্যা দেবে।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int getSetBits(int n) {
    int cnt = 0;
    while (n) {
        ++cnt;
        n = n & (n - 1);
    }
    return cnt;
}
int getMinNumber(int n){
    int bits = getSetBits(n);
    return pow(2, bits) - 1;
}
int main() {
    int n = 10;
    cout << "Minimum number = " << getMinNumber(n) << endl;
    return 0;
}

উপরের প্রোগ্রাম কম্পাইল ও এক্সিকিউট করলে নিচের আউটপুট জেনারেট হবে

আউটপুট

Minimum number = 3

  1. C++ দিয়ে ডিজয়েন্ট সেট (Disjoint Set) ব্যবহার করে দ্বীপের সংখ্যা বের করা

  2. দেয়া নাম্বার থেকে রিপিটেড ডিজিট বাদ দেওয়া C++-এ

  3. C++ L-তম এবং R-তম ইনডেক্সের মাঝপথে শুধু সেট বিট থাকা সংখ্যা বের করুন

  4. C++-এ সেটে রিফ্লেক্সিভ রিলেশন সংখ্যা বের করুন