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

C++-এ N-র চেয়ে ছোট বাইনারি ডিজিট সংখ্যাগুলোর গণনা


একটি ইন্টিজার N ইনপুট হিসেবে দেওয়া আছে। লক্ষ্য হলো N-র চেয়ে ছোট उन সংখ্যাগুলোর গণনা করা যেগুলো বাইনারি রূপে প্রকাশ করা যায়। উদাহরণস্বরূপ, যদি ইনপুট N = 12 হয়, তবে ১২-র চেয়ে ছোট বাইনারি সংখ্যাগুলো হলো ১, ১০, ১১ — মোট ৩টি।

উদাহরণ ১

ইনপুট

N=100

আউটপুট

N-র চেয়ে ছোট বাইনারি ডিজিট সংখ্যাগুলোর গণনা: 4

ব্যাখ্যা

১০০-র চেয়ে ছোট বাইনারি সংখ্যাগুলো: ১, ১০, ১১, ১০০

উদাহরণ ২

ইনপুট

N=120

আউটপুট

N-র চেয়ে ছোট বাইনারি ডিজিট সংখ্যাগুলোর গণনা: 7

ব্যাখ্যা

১২০-র চেয়ে ছোট বাইনারি সংখ্যাগুলো: ১, ১০, ১১, ১০০, ১০১, ১১০, ১১১

প্রয়োগ করা পদ্ধতি

এই পদ্ধতিতে একটি ইন্টিজার ভেক্টর vec ব্যবহার করা হয়। প্রথমে এতে ১ যোগ করা হয়। এরপর ভেক্টরের শেষ এলিমেন্টটি (আরম্ভে ১) বের করে পরবর্তী বাইনারি সংখ্যা দুটি তৈরি করা হয়: temp*10 এবং temp*10+1। কারণ বাইনারি সংখ্যাগুলো সর্বদা এই প্যাটার্ন মেনে চলে (১, ১০, ১১, ১০০, ১১০, ১১১...।)। ভেক্টর থেকে সংখ্যাগুলো বের করে যদি সেটি N-র চেয়ে ছোট বা সমান হয় তবে কাউন্ট বাড়ানো হয়।

  • ইনপুট হিসেবে ইন্টিজার N নিন।

  • Smaller_N(int N) ফাংশনটি N গ্রহণ করে N-র চেয়ে ছোট বাইনারি ডিজিট সংখ্যাগুলোর গণনা রিটার্ন করে।

  • আরম্ভিক কাউন্ট ০ রাখুন।

  • ০ এবং ১ ডিজিট ব্যবহার করে সংখ্যাগুলো সংরক্ষণের জন্য ইন্টিজার ভেক্টর vec নিন।

  • vec.push_back(1) দিয়ে ১ যোগ করুন।

  • while লুপ দিয়ে vec ট্রুভার্স করুন এবং শেষে পুশ করা এলিমেন্টটি temp = vec.back() হিসেবে নিয়ে ভেক্টর থেকে মুছে দিন।

  • যদি temp <= N হয়, তবে কাউন্ট বাড়ান এবং পরবর্তী দুটি বাইনারি ইন্টিজার temp*10 এবং temp*10+1 তৈরি করে ভেক্টরে যোগ করুন।

  • লুপ শেষে কাউন্ট রিটার্ন করুন ফলাফল হিসেবে।

উদাহরণ কোড

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

int Smaller_N(int N) {
    int count = 0; 
    vector<int> vec; 
    vec.push_back(1); 
    
    while (!vec.empty()) {
        int temp = vec.back(); 
        vec.pop_back(); 
        
        if (temp <= N) {
            count++; 
            int temp_2 = temp * 10; 
            vec.push_back(temp_2); 
            vec.push_back(temp_2 + 1); 
        } 
    } 
    
    return count; 
} 

int main() { 
    int N = 1000; 
    cout << "N-র চেয়ে ছোট বাইনারি ডিজিট সংখ্যাগুলোর গণনা: " << Smaller_N(N); 
    return 0; 
}

আউটপুট

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

N-র চেয়ে ছোট বাইনারি ডিজিট সংখ্যাগুলোর গণনা: 8

  1. C++-এ নির্দিষ্ট উচ্চতার সমতুল্য বাইনারি ট্রি গণনা

  2. C++-এ প্রতিটি উপাদানের ডানে কতগুলো ছোট সংখ্যা আছে (Count of Smaller Numbers After Self)

  3. C++-এ ১ থেকে n পর্যন্ত ৪ ডিজিট থাকা সংখ্যা গণনা (Count Numbers with Digit 4)

  4. N থেকে ছোট বা সমান সংখ্যা যাদের যোগফল S হয় এমন ন্যূনতম সংখ্যা C++-তে