3512 - Factorial Query: Difference between revisions

From Bitnami MediaWiki
 
(2 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 116: Line 116:


n - numărul al cărui factorial trebuie calculat<br>
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">

  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.