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

C++-এ N থেকে ছোট সব সংখ্যা প্রিন্ট করা যাতে শুধু ২টি স্বতন্ত্র অঙ্ক থাকে

এই সমস্যায় একটি পূর্ণসংখ্যা N দেওয়া আছে। আমাদের N থেকে ছোট সব সংখ্যা প্রিন্ট করতে হবে যাতে শুধু ২টি স্বতন্ত্র অঙ্ক থাকে অর্থাৎ সর্বোচ্চ ২টি ভিন্ন অঙ্ক ব্যবহার করে সংখ্যা তৈরি করা হবে।

উদাহরণ

ইনপুট: N = 17
আউটপুট: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

এই সমস্যাটি সমাধানের জন্য শুধু দুটি স্বতন্ত্র অঙ্ক বিশিষ্ট সব সংখ্যা তৈরি করতে হবে। সংখ্যা তৈরির প্রক্রিয়া ০ থেকে শুরু হবে এবং যখন সংখ্যাটি N-এর সমান বা বড় হবে তখন থামবে। দুটি নির্বাচিত অঙ্কের জন্য রিকার্সিভলি num*10+i এবং num*10+j দিয়ে সংখ্যা তৈরি করা হবে। এই প্রক্রিয়ায় কিছু ডুপ্লিকেট সংখ্যা তৈরি হতে পারে। তাই set ব্যবহার করা হবে ডুপ্লিকেট এড়াতে।

বাস্তবায়ন

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

set<int> numbers; 

void generateNumbers(int n, int num, int i, int j) { 
    if (num > 0 && num < n) 
        numbers.insert(num); 
    if (num >= n) 
        return; 
    if (num * 10 + i > num) 
        generateNumbers(n, num * 10 + i, i, j); 
    generateNumbers(n, num * 10 + j, i, j); 
} 

void printUniqueBitNumber(int n) { 
    for (int i = 0; i <= 9; i++) 
        for (int j = i + 1; j <= 9; j++) 
            generateNumbers(n, 0, i, j); 
    cout << "The numbers are generated are : "; 
    while (!numbers.empty()) { 
        cout << *numbers.begin() << " "; 
        numbers.erase(numbers.begin()); 
    } 
} 

int main() { 
    int n = 17; 
    printUniqueBitNumber(n); 
    return 0; 
}

আউটপুট

The numbers are generated are : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  1. C++-এ মিন হিপে নির্দিষ্ট মান x থেকে ছোট সব নোড প্রিন্ট করা

  2. N-এর চেয়ে ছোট বা সমান সংখ্যার ডিজিট গুণফলের সর্বোচ্চ মান (C++)

  3. C++-এ Y-র চেয়ে ছোট নম্বর দিয়ে মিনিমাম সেট বের করা

  4. C++ ব্যবহার করে n-র চেয়ে ছোট বা সমান সব ফ্যাক্টোরিয়াল নম্বর বের করা