3512 - Factorial Query: Difference between revisions
No edit summary |
|||
(3 intermediate revisions by 2 users not shown) | |||
Line 6: | Line 6: | ||
== Date de ieșire == | == Date de ieșire == | ||
Dacă datele sunt introduse corect, pe ecran se va afișa: | Dacă datele sunt introduse corect, pe ecran se va afișa: | ||
"Datele sunt introduse corect.", programul va afișa pe ecran produsul factorialelor celor n numere citite. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse.". | "Datele sunt introduse corect.", programul va afișa pe ecran produsul factorialelor celor '''n''' numere citite. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse.". | ||
== Restricţii şi precizări == | == Restricţii şi precizări == | ||
* 1 ≤ n ≤ 1.000.000 | * 1 ≤ n ≤ 1.000.000 | ||
*cele '''n''' numere sunt mai mici sau egale cu 10.000.000 | *cele '''n''' numere sunt mai mici sau egale cu '''10.000.000''' | ||
== Exemple == | == Exemple == | ||
Line 115: | Line 115: | ||
Această funcție calculează factorialul unui număr n și returnează valoarea acestuia, redus modular la 1.000.000.007. Are un singur parametru: | Această funcție calculează factorialul unui număr n și returnează valoarea acestuia, redus modular la 1.000.000.007. Are un singur parametru: | ||
n - numărul al cărui factorial trebuie calculat | n - numărul al cărui factorial trebuie calculat<br> | ||
Funcția main() | Funcția main() | ||
Această funcție este funcția principală a programului și este rulată atunci când scriptul Python este executat. Funcția citește de la tastatură un număr n și o listă de n numere, verifică dacă datele sunt valide cu ajutorul funcției validare_date(n, numere), calculează produsul factorialelor cu ajutorul funcției factorial(n) și afișează rezultatul la consolă. Dacă datele introduse nu corespund restricțiilor impuse, se afișează un mesaj de eroare. | Această funcție este funcția principală a programului și este rulată atunci când scriptul Python este executat. Funcția citește de la tastatură un număr n și o listă de n numere, verifică dacă datele sunt valide cu ajutorul funcției validare_date(n, numere), calculează produsul factorialelor cu ajutorul funcției factorial(n) și afișează rezultatul la consolă. Dacă datele introduse nu corespund restricțiilor impuse, se afișează un mesaj de eroare. |
Latest revision as of 16:37, 29 April 2023
Cerinţa[edit | edit source]
Se dau n numere naturale. Să se calculeze produsul factorialelor acestora, modulo 1.000.000.007
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", programul va afișa pe ecran produsul factorialelor celor n numere citite. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse.".
Restricţii şi precizări[edit | edit source]
- 1 ≤ n ≤ 1.000.000
- cele n numere sunt mai mici sau egale cu 10.000.000
Exemple[edit | edit source]
Exemplul 1[edit | edit source]
- Intrare
- 4
- 4 2 1 3
- Ieșire
- Datele sunt introduse corect.
- 288
Exemplul 2[edit | edit source]
- Intrare
- -5
- 1 2 3
- Ieșire
- Datele nu corespund restricțiilor impuse.
Exemplul 3[edit | edit source]
- Intrare
- 6
- 1 1 1 1 1 1
- Ieșire
- Datele sunt introduse corect.
- 1
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
- 3512 - Factorial Query
def validare_date(n, numere):
# Verificăm dacă n se află între 1 și 1.000.000 if n < 1 or n > 1000000: return False
# Verificăm dacă fiecare număr din listă este mai mic sau egal cu 10.000.000 for numar in numere: if numar > 10000000: return False
# Datele sunt corecte return True
def factorial(n):
# Returnează factorialul lui n, redus modular la 1.000.000.007 produs = 1 for i in range(1, n + 1): produs = (produs * i) % 1000000007 return produs
def main():
# Citim numărul n de la tastatură n_input = input("Introduceti numarul n: ") if not n_input: print("Introduceti un numar n mai mare decat 0.") return n = int(n_input)
# Citim cele n numere de la tastatură numere_input = input("Introduceti cele n numere, separate prin spatiu: ") if not numere_input: print("Introduceti cel putin un numar.") return numere = list(map(int, numere_input.split()))
# Validăm datele de intrare if not validare_date(n, numere): print("Datele nu corespund restricțiilor impuse.") return
# Calculăm produsul factorialelor și îl reducem modular la 1.000.000.007 produs = 1 for numar in numere: produs = (produs * factorial(numar)) % 1000000007
# Afișăm rezultatul print("Datele sunt introduse corect.") print(f"Produsul factorialelor este: {produs}")
if __name__ == "__main__":
main()
</syntaxhighlight>
Explicatie[edit | edit source]
Funcția validare_date(n, numere)
Această funcție primește un număr n și o listă de n numere și verifică dacă acestea corespund restricțiilor impuse. Are următorii parametri:
n - numărul de elemente din listă numere - lista de n numere de verificat Funcția returnează True dacă datele sunt valide și False în caz contrar.
Funcția factorial(n)
Această funcție calculează factorialul unui număr n și returnează valoarea acestuia, redus modular la 1.000.000.007. Are un singur parametru:
n - numărul al cărui factorial trebuie calculat
Funcția main()
Această funcție este funcția principală a programului și este rulată atunci când scriptul Python este executat. Funcția citește de la tastatură un număr n și o listă de n numere, verifică dacă datele sunt valide cu ajutorul funcției validare_date(n, numere), calculează produsul factorialelor cu ajutorul funcției factorial(n) și afișează rezultatul la consolă. Dacă datele introduse nu corespund restricțiilor impuse, se afișează un mesaj de eroare.