N অঙ্কের এবং M অঙ্কের সেট দেওয়া থাকলে, ৫ দ্বারা বিভাজ্য কতগুলো সংখ্যা বানানো যায় তা বের করতে হবে।
নियम: সংখ্যাটি ০ বা ৫ দিয়ে শেষ হতে হবে।
উদাহরণ
ইনপুট: N = 2, M = 3, arr = {5, 6, 3} → আউটপুট: 2 (৩৫, ৬৫)
ইনপুট: N = 1, M = 7, arr = {2,3,4,5,6,7,8} → আউটপুট: 1 (৫)
অ্যালগরিদম
- অ্যারেতে ০ এবং ৫ আছে কিনা চেক করুন।
- দুটিই থাকলে ইউনিটস প্লেসে ২টি উপায়, অন্যথায় ১টি।
- বাকি প্লেসগুলো পূরণের উপায় গুন করুন (পারমুটেশন)।
- ০ বা ৫ না থাকলে -১ ফেরত দিন।
সি++ ইমপ্লিমেন্টেশন
#include <bits/stdc++.h>
using namespace std;
int countDivisibleBy5(int n, int m, int arr[]) {
bool hasZero = false, hasFive = false;
if (m < n) return -1;
for (int i = 0; i < m; i++) {
if (arr[i] == 0) hasZero = true;
if (arr[i] == 5) hasFive = true;
}
long long count = 0;
if (hasZero && hasFive) {
count = 2;
for (int i = 0; i < n - 1; i++) count *= (m - 1 - i);
} else if (hasZero || hasFive) {
count = 1;
for (int i = 0; i < n - 1; i++) count *= (m - 1 - i);
} else return -1;
return count;
}
int main() {
int arr[] = {5, 6, 3};
cout << countDivisibleBy5(2, 3, arr) << endl; // 2
return 0;
}
আউটপুট
2