3741 - StarsAndBars1

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

Gigel are n bile și k cutii. În câte moduri poate plasa Gigel bilele în cutii, știind că pot rămâne și cutii goale.

Date de intrare

Programul citește de la tastatură numerele naturale n k.

Date de ieșire

Programul va afișa pe ecran numărul C, reprezentând rezultatul.

Restricții și precizări

1 ≤ k , n ≤ 500

Exemplu

intrare
3 2
ieșire
4

Explicație

Avem n=3 bile și k=2 cutii. Cele 4 modalități de a plasa bilele sunt
1. ||***|
2.|*|**|
3.|**|*|
4.|***||

Rezolvare

Rezolvare ver.1

def factorial(x):
    if not (1 <= k):
        raise ValueError
    if not (n <= 500):
        raise ValueError
    if x == 0 or x == 1:
        return 1
    else:
        return x * factorial(x-1)

def coeficient_binomial(n, k):
    return factorial(n + k - 1) // (factorial(k - 1) * factorial(n - 1))

n, k = map(int, input("Introduceți valorile lui n și k (separate prin spațiu): ").split())
rezultat = coeficient_binomial(n + k - 1, k - 1)
print("Numărul de moduri în care Gigel poate plasa bilele în cutii este:", rezultat)