4032 - Zar 1: Difference between revisions
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... |
|||
(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 | |||
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__": | if __name__ == "__main__": | ||
n = int(input("Introduceți suma n: ")) | |||
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>