2532 - Cnt Cif Sum: Diferență între versiuni

De la Universitas MediaWiki
(Pagină nouă: ==Cerința== Se dă un număr N și un număr S. Să se determine câte numere de N cifre au suma cifrelor S. ==Date de intrare== Programul citește de la tastatură numerele N și S. ==Date de ieșire== Programul va afișa pe ecran numărul C, reprezentând numărul de numere de N cifre având suma cifrelor S modulo 666013. ==Restricții și precizări== 1 ≤ N ≤ 1000 1 ≤ S ≤ 9 * N ==Exemplu==: Intrare 2 3 Ieșire 3 ==Rezolvare== MOD = 666013 def numere_suma(N,...)
 
 
(Nu s-a afișat o versiune intermediară efectuată de același utilizator)
Linia 19: Linia 19:
3
3
==Rezolvare==
==Rezolvare==
<syntaxhighlight lang="python3" line="1">
MOD = 666013
MOD = 666013


def numere_suma(N, S):
def numere_suma(N, S):
    dp = [[0] * (S + 1) for _ in range(N + 1)]


    # Inițializăm prima coloană cu 1, deoarece există o singură modalitate de a obține suma 0
  dp = [[0] * (S + 1) for _ in range(N + 1)]
    for i in range(N + 1):
  # Inițializăm prima coloană cu 1, deoarece există o singură modalitate de a obține suma 0
        dp[i][0] = 1
  for i in range(N + 1):
      dp[i][0] = 1
  # Calculăm numărul de moduri
  for i in range(1, N + 1):
      for j in range(1, S + 1):
          for k in range(10):
              if j - k >= 0:
                  dp[i][j] = (dp[i][j] + dp[i - 1][j - k]) % MOD
  return dp[N][S]


    # Calculăm numărul de moduri
if __name__ == "__main__":
    for i in range(1, N + 1):
        for j in range(1, S + 1):
            for k in range(10):
                if j - k >= 0:
                    dp[i][j] = (dp[i][j] + dp[i - 1][j - k]) % MOD


    return dp[N][S]
  N, S = map(int, input("Introduceți N și S separate prin spațiu: ").split())
 
 
if __name__ == "__main__":
  rezultat = numere_suma(N, S)
    N, S = map(int, input("Introduceți N și S separate prin spațiu: ").split())
 
   
  print(rezultat)
    rezultat = numere_suma(N, S)
</syntaxhighlight>
   
    print(rezultat)
python numere_suma.py

Versiunea curentă din 11 ianuarie 2024 18:28

Cerința

Se dă un număr N și un număr S. Să se determine câte numere de N cifre au suma cifrelor S.

Date de intrare

Programul citește de la tastatură numerele N și S.

Date de ieșire

Programul va afișa pe ecran numărul C, reprezentând numărul de numere de N cifre având suma cifrelor S modulo 666013.

Restricții și precizări

1 ≤ N ≤ 1000 1 ≤ S ≤ 9 * N ==Exemplu==: Intrare

2 3 Ieșire

3

Rezolvare

MOD = 666013

def numere_suma(N, S):

   dp = [[0] * (S + 1) for _ in range(N + 1)]
   # Inițializăm prima coloană cu 1, deoarece există o singură modalitate de a obține suma 0
   for i in range(N + 1):
       dp[i][0] = 1
   # Calculăm numărul de moduri
   for i in range(1, N + 1):
       for j in range(1, S + 1):
           for k in range(10):
               if j - k >= 0:
                   dp[i][j] = (dp[i][j] + dp[i - 1][j - k]) % MOD
   return dp[N][S]

if __name__ == "__main__":

   N, S = map(int, input("Introduceți N și S separate prin spațiu: ").split())
   
   rezultat = numere_suma(N, S)
   
   print(rezultat)