Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में M अंकों से बने N अंकों की 5 से विभाज्य संख्याएं


हमें एक संख्या 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

  1. - C++ में N/2 जोड़ियों के वर्गों का योग न्यूनतम करें

    समस्या विवरण n तत्वों की सरणी से n/2 जोड़ियां बनाएं जिससे जोड़ियों के योग के वर्गों का योग न्यूनतम हो। उदाहरण: arr = {5, 10, 7, 4} जोड़ियां: (4, 10) और (5, 7) योग: (14)² + (12)² = 196 + 144 = 340 एल्गोरिदम सरणी को क्रमबद्ध करें दो पॉइंटर्स: शुरुआत (start) और अंत (end) start और end के तत्वों की ज

  1. - C++ में नंबर्स को उनके डिजिट्स के योग के अनुसार सॉर्ट करें

    इस सेक्शन में हम देखेंगे कि नंबर्स को उनके डिजिट्स के योग के अनुसार कैसे सॉर्ट करें। इसलिए यदि किसी नंबर का डिजिट्स का योग कम है, तो वह पहले रखा जाएगा, फिर अगला नंबर बड़े डिजिट्स योग के साथ रखा जाएगा।data = {14, 129, 501, 23, 0, 145}सॉर्ट करने के बाद, वे होंगे -data = {0, 14, 23, 501, 145, 129}यहां

  1. - C++ प्रोग्राम: X से विभाज्य सबसे बड़ा K-अंकीय संख्या

    दो पूर्णांक X और K दिए गए हैं। K पूर्णांक संख्या में अंकों की संख्या है। तर्क X से विभाज्य सबसे बड़ी K-अंकीय संख्या ढूंढना है। Input: X = 30, K = 3 Output: 980 व्याख्या 980, 30 से विभाज्य सबसे बड़ी तीन अंकों की संख्या है। K को 10 की घात में लेने के बाद 1 घटाने से हमें सबसे बड़ी K अंकों की संख्या मिल