আমাদের একটি প্রাকৃতিক সংখ্যা দেওয়া হয়েছে, ধরা যাক, সংখ্যা এবং কাজটি হল সেই সমস্ত প্রাকৃতিক সংখ্যার গণনা করা যার সমস্ত পারমুটেশন সেই সংখ্যার চেয়ে বেশি৷
আমরা নিম্নলিখিত শর্তগুলির সাথে কাজ করছি৷ −
-
ডেটা শুধুমাত্র স্বাভাবিক সংখ্যা হওয়া উচিত
-
একটি প্রাকৃতিক সংখ্যার সমস্ত সম্ভাব্য স্থানান্তর বা বিন্যাস প্রদত্ত সংখ্যার সমান বা বেশি হওয়া উচিত। উদাহরণস্বরূপ, সংখ্যাটি হল 20
-
1 থেকে শুরু করে 20 পর্যন্ত সমস্ত সংখ্যা বিবেচনা করুন যেমন 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
-
এখন সেই সংখ্যাগুলি পরীক্ষা করুন যেগুলির বিন্যাস বা স্থানান্তর প্রদত্ত সংখ্যার সমান বা বেশি যেমন 20৷ সংখ্যাগুলি হল 1, 2, 3, 4, 5, 6, 7, 8, 9, 11=11, 12<21, 13<31 , 14<41, 15<51, 16<61, 17<71, 18<81, 19<91। সুতরাং গণনা 18 হবে।
-
ইনপুট − সংখ্যা =10
আউটপুট − গণনা হল 9
ব্যাখ্যা − সংখ্যাগুলি 1, 2, 3, 4, 5, 6, 7, 8, 9 হল সেই সংখ্যাগুলি যেগুলি যে কোনও উপায়ে সাজানো হলে সংখ্যার সমান৷
ইনপুট − সংখ্যা =13
আউটপুট − গণনা হল 12
ব্যাখ্যা − সংখ্যাগুলি 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12<21, 13<31 হল সেই সংখ্যাগুলি যেগুলি যে কোনও উপায়ে সাজানো হলে সংখ্যার চেয়ে বড় সংখ্যার সমান৷
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
সংখ্যা সংখ্যার মান ইনপুট করুন
-
max_size 9 তে সেট করুন কারণ সর্বদা কমপক্ষে 9টি সংখ্যা থাকবে যেগুলির সংখ্যার সমান বা তার চেয়ে বেশি হবে৷
-
0 থেকে max_size
পর্যন্ত লুপটি শুরু করুন -
লুপের ভিতরে, একটি তালিকা টাইপ ভেরিয়েবল তৈরি করুন এবং পরীক্ষা করুন যদি আমি সংখ্যার থেকে কম বা সমান যদি হ্যাঁ তাহলে তালিকায় i সন্নিবেশ করান এবং গণনা 1 দ্বারা বৃদ্ধি করুন
-
শেষ থেকে শুরু পর্যন্ত তালিকাটি অতিক্রম করুন এবং প্রথম উপাদান থেকে 9 পর্যন্ত আরেকটি লুপ শুরু করুন।
-
temp <=num কিনা তা পরীক্ষা করুন তারপর তালিকার সামনের দিকে টেম্প চাপুন এবং গণনা 1 দ্বারা বৃদ্ধি করুন
-
গণনা ফেরত দিন
-
ফলাফল প্রিন্ট করুন।
উদাহরণ
#include<bits/stdc++.h> using namespace std; //function to Count natural numbers whose //all permutation are greater than that number 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){ //insert element at the end of the list lists.push_back(i); count = count + 1; } //iterator starts from the last of the list 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