2532 - Cnt Cif Sum

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

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)