1128 - Jucarii: Difference between revisions
No edit summary |
No edit summary |
||
Line 15: | Line 15: | ||
: Datele introduse corespund restricțiilor impuse. | : Datele introduse corespund restricțiilor impuse. | ||
: 12 | : 12 | ||
<br> | |||
== Exemplul 2 == | == Exemplul 2 == | ||
; Intrare | ; Intrare | ||
Line 21: | Line 22: | ||
; Ieșire | ; Ieșire | ||
: Datele introduse nu corespund restricțiilor impuse. | : Datele introduse nu corespund restricțiilor impuse. | ||
<br> | |||
== Explicație == | == 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. | 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. |
Latest revision as of 19:08, 10 November 2023
Cerinţa[edit | edit source]
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[edit | edit source]
Programul citește de la tastatură numerele naturale m și n.
Date de ieşire[edit | edit source]
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[edit | edit source]
- 1 ⩽ n, m ⩽ 100.000
- grădinița este virtuală
Exemplul 1[edit | edit source]
- Intrare
- 2
- 4
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 12
Exemplul 2[edit | edit source]
- Intrare
- 2
- q
- Ieșire
- Datele introduse nu corespund restricțiilor impuse.
Explicație[edit | edit source]
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[edit | edit source]
<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>