আমাদের একটি প্রাকৃতিক সংখ্যা num দেওয়া আছে। কাজ হল ১ থেকে num পর্যন্ত এমন প্রাকৃতিক সংখ্যাগুলোর গণনা করা যাদের সব সম্ভাব্য পারমুটেশন (বিন্যাস) उस সংখ্যাটির চেয়ে বড় বা সমান।
শর্তাবলী
- ডেটা শুধু প্রাকৃতিক সংখ্যা হবে।
- একটি সংখ্যার সব পারমুটেশন সে সংখ্যাটির চেয়ে বড় বা সমান হতে হবে।
উদাহরণ
ইনপুট: num = 10 → আউটপুট: 9 (সংখ্যা ১ থেকে ৯)
ইনপুট: num = 13 → আউটপুট: 12 (১ থেকে ৯, ১১, ১২, ১৩)
সমাধানের পদ্ধতি
- ম্যাক্স সাইজ ৯ ধরে রাখুন (১-৯ সব সংখ্যা শর্ত পূরণ করে)।
- ১ থেকে ৯ পর্যন্ত লুপ চালান, যেসব
num-এর চেয়ে ছোট বা সমান সেগুলো কাউন্ট করুন। - প্রতিটি বৈধ সংখ্যার জন্য, এর শেষ ডিজিট থেকে ৯ পর্যন্ত ডিজিট যোগ করে নতুন সংখ্যা বানান।
- নতুন সংখ্যা
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