কম্পিউটার

C++ এ তিনের মধ্যে সবচেয়ে বড় মাল্টিপল


ধরুন আমাদের অঙ্কের একটি অ্যারে আছে, আমাদের তিনটির মধ্যে সবচেয়ে বড় গুণিতক খুঁজে বের করতে হবে যেটি প্রদত্ত কিছু সংখ্যাকে আমাদের ইচ্ছামত যেকোন ক্রমে একত্রিত করে গঠন করা যেতে পারে। উত্তরটি খুব বড় হতে পারে তাই এটি স্ট্রিং হিসাবে তৈরি করুন। কোন উত্তর না থাকলে একটি খালি স্ট্রিং ফেরত দিন।

সুতরাং, ইনপুট যদি [7,2,8] এর মত হয়, তাহলে আউটপুট হবে 87

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি 2D অ্যারে ডি সংজ্ঞায়িত করুন, তিনটি সারি থাকবে

  • অ্যারের সংখ্যাগুলি সাজান

  • যোগফল :=0

  • আরম্ভ করার জন্য i :=0, যখন i <সংখ্যার আকার, আপডেট (i 1 দ্বারা বাড়ান), do−

    • x :=সংখ্যা[i]

    • d[x mod 3]

      -এর শেষে অঙ্ক [i] সন্নিবেশ করান
    • যোগফল :=যোগফল + x

    • যোগফল :=সমষ্টি মোড 3

  • যদি যোগফল অ-শূন্য হয়, তাহলে −

    • যদি d[sum] এর আকার না হয়, তাহলে −

      • rem :=3 - যোগফল

      • যদি d[rem] <2 এর আকার হয়, তাহলে −

        • খালি স্ট্রিং ফেরত দিন

      • d[rem] থেকে দুবার শেষ উপাদান মুছুন

    • অন্যথায়

      • d[sum]

        থেকে শেষ উপাদান মুছুন
  • ret :=খালি স্ট্রিং

  • আরম্ভ করার জন্য i :=0, যখন i <3, আপডেট করুন (i 1 দ্বারা বাড়ান), −

    • j শুরু করার জন্য :=0, যখন j

      • ret :=ret concatenate d[i, j] স্ট্রিং হিসাবে

  • অ্যারে ret সাজান

  • যদি ret এবং ret[0] এর আকার '0' এর মতো হয়, তাহলে −

    • "0"

      ফেরত দিন
  • "0"

    ফেরত দিন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   string largestMultipleOfThree(vector<int>& digits) {
      vector<vector<int>> d(3);
      sort(digits.begin(), digits.end(), greater<int>());
      int sum = 0;
      for (int i = 0; i < digits.size(); i++) {
         int x = digits[i];
         d[x % 3].push_back(digits[i]);
         sum += x;
         sum %= 3;
      }
      if (sum) {
         if (!d[sum].size()) {
            int rem = 3 - sum;
            if (d[rem].size() < 2)
            return "";
            d[rem].pop_back();
            d[rem].pop_back();
         }
         else {
            d[sum].pop_back();
         }
      }
      string ret = "";
      for (int i = 0; i < 3; i++) {
         for (int j = 0; j < d[i].size(); j++) {
            ret += to_string(d[i][j]);
         }
      }
      sort(ret.begin(), ret.end(), greater<int>());
      if (ret.size() && ret[0] == '0')
      return "0";
      return ret;
   }
};
main(){
   Solution ob;
   vector<int> v = {7,2,8};
   cout << (ob.largestMultipleOfThree(v));
}

ইনপুট

{7,2,8}

আউটপুট

87

  1. C++ এ একটি গাছের মধ্যে সবচেয়ে বড় সাবট্রি সমষ্টি খুঁজুন

  2. C++ এ লক্ষ্য যোগফল

  3. C++ এ অ্যালিকোট যোগফল?

  4. তিনটি সংখ্যার মধ্যে সবচেয়ে বড় সংখ্যা খুঁজে পেতে C++ প্রোগ্রাম