हमें एक संख्या N दी गई है साथ में M अंकों की एक सरणी। हमारा काम दिए गए M अंकों से बनी N अंकों की उन संख्याओं की संख्या ज्ञात करना है जो 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 से विभाज्य है। तो, हमारा काम दिए गए अंकों से N अंकों की उन संख्याओं की संख्या ज्ञात करना है जो 5 से विभाज्य हैं।
संख्या 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