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

पायथन में n डाइस फेंकने के तरीकों की संख्या गिनने का प्रोग्राम


मान लीजिए हमारे पास एक संख्या n, फेस की संख्या, और एक कुल मान है, हमें उन तरीकों की संख्या ढूंढनी है जिनसे n डाइस को फेंककर कुल मान प्राप्त किया जा सकता है। यदि उत्तर बहुत बड़ा है तो परिणाम को 10^9 + 7 से मॉड करें।

उदाहरण के लिए, यदि इनपुट n = 2, faces = 6, total = 8 है, तो आउटपुट 5 होगा, क्योंकि 2 छह-फेस वाले डाइस से 8 बनाने के 5 तरीके हैं: (2 और 6), (6 और 2), (3 और 5), (5 और 3), (4 और 4)।

इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:

  • m := 10^9 + 7
  • dp := आकार (total + 1) की सूची, 0 से भरी हुई
  • face को 1 से min(faces, total) तक के लिए करें:
    • dp[face] := 1
  • i को 0 से n-2 तक के लिए करें:
    • j को total से 0 तक घटाते हुए करें:
      • dp[j] := सभी dp[j - f] का योग जहां f 1 से faces+1 तक और j - f >= 1
  • dp के अंतिम तत्व को m से मॉड करके वापस करें

उदाहरण

class Solution:
    def solve(self, n, faces, total):
        m = 10 ** 9 + 7
        dp = [0] * (total + 1)
        for face in range(1, min(faces, total) + 1):
            dp[face] = 1
        for i in range(n - 1):
            for j in range(total, 0, -1):
                dp[j] = sum(dp[j - f] for f in range(1, faces + 1) if j - f >= 1)
        return dp[-1] % m
ob = Solution()
n = 2
faces = 6
total = 8
print(ob.solve(n, faces, total))

इनपुट

2,6,8

आउटपुट

5
  1. - Python प्रोग्राम - स्ट्रिंग में विशिष्ट सबस्ट्रिंग की संख्या गिनें

    एक स्ट्रिंग s दी गई है, हमें s के विशिष्ट गैर-खाली सबस्ट्रिंग की संख्या खोजनी है। उदाहरण इनपुट: s = abaa आउटपुट: 8 व्याख्या: सबस्ट्रिंग हैं [a, b, ab, ba, aa, aba, baa, abaa]। एल्गोरिदम (ट्राई/प्रीफिक्स ट्री) trie := {} (खाली डिक्शनरी) n := len(s) i 0 से n-1 तक: curr := trie j i से n-1

  1. - Python प्रोग्राम - अधिकतम k लगातार गेम जीतने के तरीकों की गिनती

    दो संख्याएं n और k दी गई हैं। यहां n उन गेम की संख्या दर्शाता है जिन्हें हम खेलने जा रहे हैं। हमें उन तरीकों की संख्या खोजनी है जिनसे हम लगातार k या उससे कम गेम जीत सकते हैं। यदि उत्तर बहुत बड़ा है तो परिणाम को 10^9 + 7 से मोड करें। उदाहरण इनपुट: n = 3, k = 2 आउटपुट: 7 व्याख्या: लगातार 2 या उससे कम

  1. पायथन में ऐरे में x से बड़े सभी वैल्यूज को फ़िल्टर करने का प्रोग्राम पायथन में ऐरे में x से बड़े सभी वैल्यूज को फ़िल्टर करने का प्रोग्राम

    मान लीजिए हमारे पास nums नामक संख्याओं की सूची है। हमारे पास x नामक एक और संख्या भी है। हमें nums से उन सभी नंबरों को फ़िल्टर करके ढूंढना है जो x से कम हैं। पायथन में filter() मेथड होता है जो फंक्शन को आर्गुमेंट के रूप में लेता है और इस फंक्शन का उपयोग करके फ़िल्टर करता है। तो, यदि इनपुट nums = [1,5