আমরা 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