हमने M अंकों की एक सरणी के साथ एक संख्या N दी है। हमारा काम दिए गए M अंकों से बनने वाली ndigit संख्याओं की संख्या ज्ञात करना है जो 5 से विभाज्य हैं।
आइए समस्या इनपुट और आउटपुट को समझने के लिए कुछ उदाहरण देखें।
इन −
N = 2 M = 3 arr = {5, 6, 3}
बाहर −
2
2 N अंकों की संख्याएँ 35 और 65 संभव हैं जो 5 से विभाज्य हैं। आइए एक और उदाहरण देखें।
इनपुट -
N = 1 M = 7 arr = {2, 3, 4, 5, 6, 7, 8}
आउटपुट -
1
दिए गए एरे में 1 अंक वाली केवल 1 संख्या है जो 5 से विभाज्य है। इसलिए, हमारा काम उन संख्याओं की संख्या ज्ञात करना है जो दी गई संख्या से एन अंकों के साथ बनाई जा सकती हैं जो 5 से विभाज्य हैं।
संख्या 5 से विभाज्य होने के लिए अंक 0 या 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