কম্পিউটার

5 দ্বারা বিভাজ্য N ডিজিটের সংখ্যাগুলি C++ এ M সংখ্যা থেকে গঠিত


আমরা M সংখ্যার অ্যারের সাথে একটি সংখ্যা N দিয়েছি। আমাদের কাজ হল 5 দ্বারা বিভাজ্য প্রদত্ত এম ডিজিট থেকে গঠিত এনডিজিট সংখ্যার সংখ্যা খুঁজে বের করা।

সমস্যা ইনপুট এবং আউটপুট বোঝার জন্য কিছু উদাহরণ দেখি।

- মধ্যে

N = 2
M = 3
arr = {5, 6, 3}

আউট -

2

35 এবং 65 সংখ্যার 2টি N সংখ্যা আছে যেগুলি 5 দ্বারা বিভাজ্য। আসুন আরেকটি উদাহরণ দেখি।

ইনপুট -

N = 1
M = 7
arr = {2, 3, 4, 5, 6, 7, 8}

আউটপুট -

1

প্রদত্ত অ্যারেতে 1 ডিজিট সহ শুধুমাত্র 1টি সংখ্যা রয়েছে যা 5 দ্বারা বিভাজ্য। সুতরাং, আমাদের কাজ হল প্রদত্ত সংখ্যা থেকে 5 দ্বারা বিভাজ্য N ডিজিট সহ এমন সংখ্যার সংখ্যা খুঁজে বের করা।

সংখ্যাটি অবশ্যই 0 বা 5 দিয়ে শেষ হতে হবে যাতে 5 দ্বারা বিভাজ্য হয়। আসুন অ্যালগরিদমটি দেখি

অ্যালগরিদম

  • প্রদত্ত অ্যারেতে 0 এবং 5 পরীক্ষা করুন। 2. যদি 0 এবং 5 উভয়ই থাকে তবে ইউনিটের জায়গায় একটি সংখ্যা বসানোর দুটি উপায় রয়েছে। অন্যথায়, একটি সংখ্যা বসানোর একটি একক উপায় থাকবে৷
    • গণনাটি 2-এ শুরু করুন।
    • এখন, অবশিষ্ট স্থানে যথাক্রমে m - 1, m - 2, m - 3, ... n উপায়গুলি পূরণ করার উপায় থাকতে পারে।
    • একটি লুপ লিখুন যা 0 থেকে n - 1 পর্যন্ত পুনরাবৃত্তি করে।
      • অ্যারের সেই আকার হ্রাস করুন।
      • গণনা দিয়ে এটিকে গুণ করুন।
  • যদি একটি একক সংখ্যা 0 বা 5 থাকে তবে ইউনিটের জায়গায় একটি সংখ্যা স্থাপন করার একমাত্র উপায় রয়েছে৷
    • গণনাটি 2-এ শুরু করুন।
    • এখন, অবশিষ্ট স্থানে যথাক্রমে m - 1, m - 2, m - 3, ... n উপায়গুলি পূরণ করার উপায় থাকতে পারে।
    • একটি লুপ লিখুন যা 0 থেকে n - 1 পর্যন্ত পুনরাবৃত্তি করে।
      • অ্যারের সেই আকার হ্রাস করুন।
      • গণনা দিয়ে এটিকে গুণ করুন।
  • যদি কোন সংখ্যা 0 বা 5 না থাকে তাহলে আমরা একটি সংখ্যা গঠন করতে পারি যেটি 5 দ্বারা বিভাজ্য হতে পারে। সেক্ষেত্রে -1 রিটার্ন করুন।

বাস্তবায়ন

C++

-এ উপরের অ্যালগরিদমের বাস্তবায়ন নিচে দেওয়া হল
#include <bits/stdc++.h>

using namespace std;

int numbers(int n, int m, int arr[]) {
   bool isZeroPresent = false, isFivePresent = false;
   int numbersCount = 0;
   if (m < n) {
      return -1;
   }
   for (int i = 0; i < m; i++) {
      if (arr[i] == 0) {
         isZeroPresent = true;
      }
      if (arr[i] == 5) {
         isFivePresent = true;
      }
   }
   if (isZeroPresent && isFivePresent) {
      numbersCount = 2;
      for (int i = 0; i < n - 1; i++) {
         m--;
         numbersCount = numbersCount * m;
      }
   } else if (isZeroPresent || isFivePresent) {
      numbersCount = 1;
      for (int i = 0; i < n - 1; i++) {
         m--;
         numbersCount = numbersCount * m;
      }
   } else {
      return -1;
   }
   return numbersCount;
}
int main() {
   int arr[] = {5, 6, 3};
   cout << numbers(2, 3, arr) << endl;
   return 0;
}

আউটপুট

আপনি যদি উপরের কোডটি চালান, তাহলে আপনি নিম্নলিখিত ফলাফল পাবেন।

2

  1. nম সংখ্যাটি সন্ধান করুন যেখানে k সংখ্যাটি রয়েছে বা C++ এ k দ্বারা বিভাজ্য

  2. C++ এ N সংখ্যা দ্বারা গঠিত N/2 জোড়ার যোগফলের বর্গক্ষেত্রের যোগফলকে ছোট করুন

  3. সংখ্যাগুলিকে তাদের সংখ্যার যোগফল অনুযায়ী C++ এ সাজান

  4. X দ্বারা বিভাজ্য বৃহত্তম K সংখ্যার জন্য C++ প্রোগ্রাম?