কম্পিউটার

প্রাকৃতিক সংখ্যা গণনা করুন যার সমস্ত স্থানান্তর C++ এ সংখ্যার চেয়ে বেশি


আমাদের একটি প্রাকৃতিক সংখ্যা দেওয়া হয়েছে, ধরা যাক, সংখ্যা এবং কাজটি হল সেই সমস্ত প্রাকৃতিক সংখ্যার গণনা করা যার সমস্ত পারমুটেশন সেই সংখ্যার চেয়ে বেশি৷

আমরা নিম্নলিখিত শর্তগুলির সাথে কাজ করছি৷ −

  • ডেটা শুধুমাত্র স্বাভাবিক সংখ্যা হওয়া উচিত

  • একটি প্রাকৃতিক সংখ্যার সমস্ত সম্ভাব্য স্থানান্তর বা বিন্যাস প্রদত্ত সংখ্যার সমান বা বেশি হওয়া উচিত। উদাহরণস্বরূপ, সংখ্যাটি হল 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

  1. C++ এ প্রদত্ত সংখ্যা দ্বারা বিভাজ্য n সংখ্যার সংখ্যা গণনা করুন

  2. 10^6 এর থেকে কম এমন সব সংখ্যা গণনা করুন যার ন্যূনতম মৌলিক গুণনীয়ক হল N C++

  3. প্রদত্ত সংখ্যার চেয়ে কঠোরভাবে কম একটি সংখ্যা প্রিন্ট করুন যাতে এর সমস্ত সংখ্যা C++ এ স্বতন্ত্র হয়

  4. C++ এ N এর থেকে কম বা সমান সমস্ত মৌলিক সংখ্যা প্রিন্ট করুন