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

C++-এ সেই প্রাকৃতিক সংখ্যাগুলো বের করা যাদের সব পারমুটেশন সংখ্যাটির চেয়ে বড় বা সমান

আমাদের একটি প্রাকৃতিক সংখ্যা num দেওয়া আছে। কাজ হল ১ থেকে num পর্যন্ত এমন প্রাকৃতিক সংখ্যাগুলোর গণনা করা যাদের সব সম্ভাব্য পারমুটেশন (বিন্যাস) उस সংখ্যাটির চেয়ে বড় বা সমান।

শর্তাবলী

  • ডেটা শুধু প্রাকৃতিক সংখ্যা হবে।
  • একটি সংখ্যার সব পারমুটেশন সে সংখ্যাটির চেয়ে বড় বা সমান হতে হবে।

উদাহরণ

ইনপুট: num = 10 → আউটপুট: 9 (সংখ্যা ১ থেকে ৯)

ইনপুট: num = 13 → আউটপুট: 12 (১ থেকে ৯, ১১, ১২, ১৩)

সমাধানের পদ্ধতি

  1. ম্যাক্স সাইজ ৯ ধরে রাখুন (১-৯ সব সংখ্যা শর্ত পূরণ করে)।
  2. ১ থেকে ৯ পর্যন্ত লুপ চালান, যেসব num-এর চেয়ে ছোট বা সমান সেগুলো কাউন্ট করুন।
  3. প্রতিটি বৈধ সংখ্যার জন্য, এর শেষ ডিজিট থেকে ৯ পর্যন্ত ডিজিট যোগ করে নতুন সংখ্যা বানান।
  4. নতুন সংখ্যা num-এর চেয়ে ছোট বা সমান হলে কাউন্টে যোগ করুন।

প্রোগ্রাম উদাহরণ

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

void count(int num) {
    int count = 0;
    int max_size = 9;
    for (int i = 1; i <= max_size; i++) {
        list<int> lists;
        if (i <= num) {
            lists.push_back(i);
            count++;
        }
        for (auto iter = lists.end(); iter != lists.begin(); ++iter) {
            int first_ele = lists.front();
            lists.pop_front();
            for (int next = first_ele % 10; next <= 9; next++) {
                int temp = first_ele * 10 + next;
                if (temp <= num) {
                    lists.push_front(temp);
                    count++;
                }
            }
        }
    }
    cout << "count of num " << num << " is " << count << endl;
}

int main() {
    count(1);
    count(9);
    count(7);
    count(0);
    count(12);
    return 0;
}

আউটপুট

count of num 1 is 1
count of num 9 is 9
count of num 7 is 7
count of num 0 is 0
count of num 12 is 11
  1. C++-এ n-ডিজিট সংখ্যা যেগুলো দেওয়া সংখ্যা দিয়ে বিভাজ্য

  2. C++-এ 10^6-এর চেয়ে ছোট যেসব সংখ্যার ন্যূনতম প্রাইম ফ্যাক্টর N তাদের গণনা

  3. C++-এ দেওয়া সংখ্যা থেকে কম একটি সংখ্যা প্রিন্ট করা যাতে তার সব অঙ্ক ভিন্ন হয়

  4. N-এর চেয়ে ছোট বা সমান সব প্রাইম নম্বর প্রিন্ট করা C++-তে