কম্পিউটার

সংখ্যাগুলি সর্বাধিক N প্রদত্ত সংখ্যা C++ এ সেট করা হয়েছে


ধরুন আমাদের কাছে D সংখ্যার একটি সাজানো সেট আছে, {'1', '2', '3', '4', '5', '6', '7', '8', 'এর একটি অ-খালি উপসেট। 9'} বাদে 0। এখন, আমরা এই সংখ্যাগুলি ব্যবহার করে কিছু সংখ্যা লিখব, প্রতিটি সংখ্যা যতবার চাই ততবার ব্যবহার করে। সুতরাং, যদি D ={'2', '3', '7'}, আমরা সংখ্যা লিখতে পারি যেমন '23', '771', '2372327'।

এখন আমাদেরকে ধনাত্মক পূর্ণসংখ্যার সংখ্যা খুঁজে বের করতে হবে যেগুলো লেখা যেতে পারে যেগুলো N এর কম বা সমান।

সুতরাং, যদি ইনপুটটি হয় D =[2,3,4,7], N =100, তাহলে আউটপুট হবে 20, যেমন সংখ্যাগুলি 2, 3, 4, 7, 22, 23, 24, 27 হতে পারে , 32, 33, 34, 37, 42, 43, 44, 47, 72, 73, 74, 77। অন্য সব সংখ্যা 100-এর বেশি।

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

  • n :=N কে স্ট্রিং এ রূপান্তর করুন

  • sz :=n এর আকার, ret :=0

  • আরম্ভ করার জন্য i :=1, যখন i

    • ret :=ret + (D এর আকার)^i

  • আরম্ভ করার জন্য i :=0, যখন i

    • hasSameNum :=মিথ্যা

    • D-

      -এ প্রতিটি স্ট্রিং x এর জন্য
      • যদি x[0]

        • ret :=ret + (D এর আকার)^(sz - i - 1)

      • অন্যথায় যখন x[0] n[i] এর মত হয়, তখন −

        • hasSameNum :=সত্য

    • না থাকলে hasSameNum অ-শূন্য হয়, তাহলে −

      • রিটার্ন রিটার্ন

  • রিটার্ন ret + 1

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

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int atMostNGivenDigitSet(vector<string> &D, int N) {
      string n = to_string(N);
      int sz = n.size();
      int ret = 0;
      for (int i = 1; i < sz; i++) {
         ret += pow(D.size(), i);
      }
      for (int i = 0; i < sz; i++) {
         bool hasSameNum = false;
         for (string &x : D) {
            if (x[0] < n[i]) {
               ret += pow(D.size(), sz - i - 1);
            } else if (x[0] == n[i]) {
               hasSameNum = true;
            }
         }
         if (!hasSameNum)
         return ret;
      }
      return ret + 1;
   }
};
main(){
   Solution ob;
   vector<string> v = {"2","3","4","7",};
   cout << (ob.atMostNGivenDigitSet(v, 100));
}

ইনপুট

{"2","3","4","7"}, 100

আউটপুট

20

  1. C++ এ প্রদত্ত শর্ত সহ গ্রিডে 8টি সংখ্যা পূরণ করুন

  2. বেল নম্বর - C++ এ একটি সেট পার্টিশন করার উপায়ের সংখ্যা

  3. C++ এ প্রদত্ত সীমাবদ্ধতার অধীনে ডুপ্লিকেট খুঁজুন

  4. C++ এ প্রদত্ত সেটের সমস্ত স্বতন্ত্র উপসেট খুঁজুন