1128 - Jucarii
Cerinţa
La o grădiniță, cei m copii de la grupa mică s-au trezit în fața a n jucării diferite. Cel mai isteț dintre ei vă întreabă în câte moduri ar putea să-și aleagă fiecare câte o jucărie ?
Date de intrare
Programul citește de la tastatură numerele naturale m și n.
Date de ieşire
Programul va afișa pe ecran numărul q, reprezentând numărul de moduri în care pot să-și aleagă fiecare câte o jucărie. Pentru că acest număr poate fi foarte mare, se va afișa modulo 224737.
Restricții și precizări
- 1 ⩽ n, m ⩽ 100.000
- grădinița este virtuală
Exemplul 1
- Intrare
- 2
- 4
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 12
Exemplul 2
- Intrare
- 2
- q
- Ieșire
- Datele introduse nu corespund restricțiilor impuse.
Explicație
Avem 2 copii și 4 jucării ( notate a, b, c, d ). Cei doi copii pot lua jucăriile (a,b), (a,c), (a,d), (b,c), (b,d), (c,d), (b,a), (c,a), (d,a), (c,b), (d,b), (d,c), în total 12 variante de alegere.
Rezolvare
<syntaxhighlight lang="python" line>
- 1128 Jucarii
- Definim funcția de verificare a valorilor m și n
def verificare(m_val, n_val):
# Verificăm dacă m și n respectă restricțiile problemei if 1 <= m_val <= 100000 and 1 <= n_val <= 100000: # Dacă valorile sunt valide, returnăm True return True else: # Dacă valorile nu sunt valide, ridicăm o excepție raise ValueError
- Definim funcția pentru calculul permutărilor
def permutari(n_val, m_val):
# Definim funcția internă pentru calculul factorialului def factorial(num): # Dacă n este 0, returnăm 1 (cazul de bază al factorialului) if num == 0: return 1 else: # Altfel, calculăm factorialul recursiv return num * factorial(num-1)
# Calculăm și returnăm permutările folosind formula n! / (n-m)! return factorial(n_val) // factorial(n_val-m_val)
- Verificăm dacă acest script este rulat direct (nu este importat ca modul)
if __name__ == '__main__':
try: # Citim numărul de copii m = int(input("Introduceti numarul de copii: ")) # Citim numărul de jucării n = int(input("Introduceti numarul de jucarii: "))
# Verificăm dacă datele introduse sunt valide if verificare(m, n): # Dacă datele sunt valide, afișăm un mesaj de confirmare print("Datele introduse corespund restricțiilor impuse.")
# Calculăm și afișăm numărul de permutări print(permutari(n, m))
# Tratăm cazul în care datele introduse nu sunt valide except ValueError: # Afișăm un mesaj de eroare print("Datele introduse nu corespund restricțiilor impuse.")
</syntaxhighlight>