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

বাইনারি রিপ্রেজেন্টেশনে সব ১ থাকা সংখ্যাগুলি গণনা C++-এ


একটি ধনাত্মক পূর্ণসংখ্যা N দেওয়া আছে। লক্ষ্য হল N-এর চেয়ে ছোট বা সমান যেসব সংখ্যার বাইনারি রিপ্রেজেন্টেশনে শুধু ১ থাকে, তাদের সংখ্যা বের করা। যেমন ১ হল ১, ৩ হল ১১, ৭ হল ১১১, ১৫ হল ১১১১ ইত্যাদি।

এই সংখ্যাগুলো наблюда করলে সবই 2i - 1 ফর্মের। যেখানে i=1 থেকে শুরু হয়। N-এর চেয়ে ছোট বা সমান এသူবিধ সংখ্যা বের করার জন্য আমরা চেক করি 2i - 1 <= n কিনা। থাকলে কাউন্ট বাড়ান।

উদাহরণ

ইনপুট: N=15

আউটপুট: বাইনারিতে সব ১ থাকা সংখ্যা: ৪

ব্যাখ্যা: সংখ্যাগুলো হল ১, ৩, ৭, ১৫

ইনপুট: N=50

আউটপুট: বাইনারিতে সব ১ থাকা সংখ্যা: ৫

প্রোগ্রামে ব্যবহৃত পদ্ধতি
  • একটি ধনাত্মক পূর্ণসংখ্যা N নেওয়া হয়।
  • allOnes(int n) ফাংশন n নিয়ে বাইনারিতে সব ১ থাকা সংখ্যাগুলির কাউন্ট রিটার্ন করে।
  • প্রাথমিক count = 0।
  • i=1 থেকে i<=n পর্যন্ত লুপ চালানো হয়।
  • প্রতিটি i-এর জন্য pow(2,i)-1 <= n হলে count বাড়ানো হয়।
  • শেষে count রিটার্ন করা হয়।
C++ কোড উদাহরণ
#include 
using namespace std;

int allOnes(int n){
    int count = 0;
    for(int i=1; i<=n; i++){
        if(n >= pow(2,i)-1){
            count++;
        }
    }
    return count;
}

int main(){
    int N=23;
    cout << endl << "বাইনারিতে সব ১ থাকা সংখ্যা: " << allOnes(N);
    return 0;
}
আউটপুট

উপরোক্ত কোড রান করলে আউটপুট:

বাইনারিতে সব ১ থাকা সংখ্যা: ৪
  1. C++-এ নির্দিষ্ট উচ্চতার সমতুল্য বাইনারি ট্রি গণনা

  2. C++-এ বাইনারি রিপ্রেজেন্টেশন থেকে প্রিভিয়াস নম্বর বের করা

  3. C++-এ বাইনারি রিপ্রেজেন্টেশন থেকে নেক্সট নম্বর বের করা

  4. দেওয়া সংখ্যার বাইনারি রিপ্রেজেন্টেশন C++-এ