4032 - Zar 1: Difference between revisions

From Bitnami MediaWiki
Mraa (talk | contribs)
Pagină nouă: ==Cerința== În câte moduri se poate obține suma n aruncând cu zarul (În câte moduri poți să îl scrii pe n ca sumă de valori mai mici sau egale cu 6). ==Date de intrare== Programul citește de la tastatură numărul n. ==Date de ieșire== Programul va afișa pe ecran răspunsul la întrebarea din enunț. ==Restricții și precizări== 1≤n≤1018 Rezultatul se va afișa modulo 109+7 . ==Exemplu==: Intrare 8 Ieșire 125 ==Explicație== Câteva dintre posibilit...
 
Mraa (talk | contribs)
 
(One intermediate revision by the same user not shown)
Line 22: Line 22:
Câteva dintre posibilități ar fi 1 + 1 + 6, 2 + 5 + 1, 1 + 6 + 1 …
Câteva dintre posibilități ar fi 1 + 1 + 6, 2 + 5 + 1, 1 + 6 + 1 …
==Rezolvare==
==Rezolvare==
<syntaxhighlight lang="python3" line="1">
MOD = 10**9 + 7
MOD = 10**9 + 7


def numar_moduri_suma(n):
def numar_moduri_suma(n):
    # Initializăm lista cu 0-uri
    dp = [0] * (n + 1)


    # Există o singură modalitate de a obține suma 0, adică nu aruncăm zarul
  # Initializăm lista cu 0-uri
    dp[0] = 1
  dp = [0] * (n + 1)
 
  # Există o singură modalitate de a obține suma 0, adică nu aruncăm zarul
    # Calculăm numărul de moduri pentru fiecare sumă posibilă
  dp[0] = 1
    for i in range(1, n + 1):
  # Calculăm numărul de moduri pentru fiecare sumă posibilă
        for j in range(1, 7):
  for i in range(1, n + 1):
            if i - j >= 0:
      for j in range(1, 7):
                dp[i] = (dp[i] + dp[i - j]) % MOD
          if i - j >= 0:
 
              dp[i] = (dp[i] + dp[i - j]) % MOD
    return dp[n]
  return dp[n]


if __name__ == "__main__":
if __name__ == "__main__":
    n = int(input("Introduceți suma n: "))
    rezultat = numar_moduri_suma(n)


    print(rezultat)
  n = int(input("Introduceți suma n: "))
python sumar_zar.py
  rezultat = numar_moduri_suma(n)
  print(rezultat)
</syntaxhighlight>

Latest revision as of 18:29, 11 January 2024

Cerința[edit | edit source]

În câte moduri se poate obține suma n aruncând cu zarul (În câte moduri poți să îl scrii pe n ca sumă de valori mai mici sau egale cu 6).

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran răspunsul la întrebarea din enunț.

Restricții și precizări[edit | edit source]

1≤n≤1018 Rezultatul se va afișa modulo 109+7 . ==Exemplu==: Intrare

8 Ieșire

125

Explicație[edit | edit source]

Câteva dintre posibilități ar fi 1 + 1 + 6, 2 + 5 + 1, 1 + 6 + 1 …

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> MOD = 10**9 + 7

def numar_moduri_suma(n):

  # Initializăm lista cu 0-uri
  dp = [0] * (n + 1)
  # Există o singură modalitate de a obține suma 0, adică nu aruncăm zarul
  dp[0] = 1
  # Calculăm numărul de moduri pentru fiecare sumă posibilă
  for i in range(1, n + 1):
      for j in range(1, 7):
          if i - j >= 0:
              dp[i] = (dp[i] + dp[i - j]) % MOD
  return dp[n]

if __name__ == "__main__":

  n = int(input("Introduceți suma n: "))
  rezultat = numar_moduri_suma(n)
  print(rezultat)

</syntaxhighlight>