কম্পিউটার

C++ এ একই সংখ্যার ফ্যাক্টোরিয়াল পণ্য সহ সর্বাধিক সংখ্যা


প্রদত্ত কাজটি হল কোন অগ্রণী বা অনুগামী শূন্য বা এমন সংখ্যা ছাড়াই সর্বাধিক সংখ্যা খুঁজে বের করা যার সংখ্যাগুলির গুণিতকের গুণফল প্রদত্ত সংখ্যা N এর সংখ্যাগুলির ফ্যাক্টোরিয়ালের গুণফলের সমান।

আসুন এখন বুঝতে পারি −

একটি উদাহরণ ব্যবহার করে আমাদের কী করতে হবে

ইনপুট − N =4912

আউটপুট − 73332222

ব্যাখ্যা − 4! *9! *১! *2! =7! *3! *3! *3! *2! *2! *2! *2! =17,418,240

ইনপুট − N =340

আউটপুট − 3322

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • সর্বোচ্চ উত্তর পাওয়ার জন্য আমাদের প্রদত্ত সংখ্যাটিকে মৌলিক সংখ্যার ফ্যাক্টরিয়ালের গুণফল হিসাবে প্রকাশ করতে হবে।

    যদি প্রদত্ত সংখ্যাটিতে শুধুমাত্র শূন্য এবং একটি থাকে তবে একটি আউটপুট খুঁজে পাওয়া সম্ভব নয়।

  • ফাংশনে MaxNum() সংখ্যার মোট সংখ্যা সংরক্ষণ করতে int-এর একটি পরিবর্তনশীল total_digits তৈরি করুন এবং প্রতিটি সংঘটিত সংখ্যার ফ্রিকোয়েন্সি সংরক্ষণ করার জন্য Frq[] ={0} টাইপের আরেকটি অ্যারে শুরু করুন।

  • i=0 থেকে i

  • যদি বর্তমান অঙ্কটি প্রাইম হয়, তাহলে বিন্যাসের Frq[] অবস্থানে 1 যোগ করুন।

  • ডিজিটের অন্য অংশটি প্রাইম নয়, তারপর আলাদা ইফ স্টেটমেন্টের মাধ্যমে চেক করুন যে এটি হয় 4, 6, 8 বা 9 এবং তারপরে এটিকে এর মৌলিক মৌলিক ফ্যাক্টরিয়ালগুলিতে ভেঙে দিন এবং সেই অনুযায়ী ফ্রিকোয়েন্সি বৃদ্ধি করুন।

  • চূড়ান্ত উত্তর সংরক্ষণ করতে একটি খালি স্ট্রিং 'উত্তর' তৈরি করুন।

  • চূড়ান্ত ধাপে যাওয়ার আগে, সংখ্যাটিতে শুধুমাত্র একটি এবং শূন্য রয়েছে কিনা তা পরীক্ষা করুন। যদি তাই হয় তবে কেবল আসল স্ট্রিংটি ফিরিয়ে দিন অন্যথায় পরবর্তী ধাপে যান৷

  • i=9 থেকে i>=2 পর্যন্ত লুপ। int-এর একটি ভেরিয়েবল C =Frq[i] টাইপ শুরু করুন এবং for loop-এর ভিতরে কন্ডিশন সহ একটি while লুপ তৈরি করুন যখন (C--) যাতে ans+=(char)(i+48) স্ট্রিং-এ চূড়ান্ত উত্তর সংরক্ষণ করতে হয়। উত্তর।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
string MaxNum(string str){
   int total_digits = str.length();
   int Frq[15] = { 0 };
   //Obtaining the frequency of every digit
   for (int i = 0; i < total_digits; i++){
      if (str[i] == '1'|| str[i] == '2'|| str[i] == '3'|| str[i] == '5'|| str[i] == '7'){
         Frq[str[i] - 48] += 1;
      }
      // 4! = 2! * 2! * 3!
      if (str[i] == '4'){
         Frq[2] += 2;
         Frq[3]++;
      }
      // 6! = 5! * 3!
      if (str[i] == '6'){
         Frq[5]++;
         Frq[3]++;
      }
      // 8! = 7! * 2! * 2! * 2!
      if (str[i] == '8'){
         Frq[7]++;
         Frq[2] += 3;
      }
      // 9! = 7! * 3! * 3! * 2!
      if (str[i] == '9'){
         Frq[7]++;
         Frq[3] += 2;
         Frq[2]++;
      }
   }
   string ans = "";
   //If number has only 1 or 0
   if (Frq[1] == total_digits || Frq[0] == total_digits || (Frq[0] + Frq[1]) == total_digits){
      return str;
   }
   else{
      //Maximum number possible
      for (int i = 9; i >= 2; i--){
         int C = Frq[i];
         while (C--){
            ans += (char)(i + 48);
         }
      }
      return ans;
   }
}
//Main function
int main(){
   string str = "340";
   cout << MaxNum(str);
   return 0;
}

আউটপুট

আমরা উপরের কোডটি চালালে আমরা নিম্নলিখিত আউটপুট পাব −

3322

  1. C++ এ একই ধারাবাহিক পার্থক্য সহ সংখ্যা

  2. C++ এ একই সংখ্যক সেট বিটের সাথে সংখ্যা যোগ করে সর্বোচ্চ যোগফল

  3. C++ এ সর্বাধিক পণ্যের চতুর্গুণ সংখ্যা খুঁজুন

  4. C++ এ প্রদত্ত পণ্যের সাথে N পূর্ণসংখ্যার সর্বাধিক GCD