3512 - Factorial Query: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerinţa == Se dau '''n''' numere naturale. Să se calculeze produsul factorialelor acestora, modulo '''1.000.000.007''' == Date de intrare == Programul citește de la tastatură numărul '''n''', iar apoi '''n''' numere naturale, separate prin spații. == Date de ieșire == 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 re...
 
 
(4 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 100: Line 100:


</syntaxhighlight>
</syntaxhighlight>
==Explicatie==
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<br>
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.

Latest revision as of 16:37, 29 April 2023

Cerinţa[edit]

Se dau n numere naturale. Să se calculeze produsul factorialelor acestora, modulo 1.000.000.007

Date de intrare[edit]

Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spații.

Date de ieșire[edit]

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]

  • 1 ≤ n ≤ 1.000.000
  • cele n numere sunt mai mici sau egale cu 10.000.000

Exemple[edit]

Exemplul 1[edit]

Intrare
4
4 2 1 3
Ieșire
Datele sunt introduse corect.
288

Exemplul 2[edit]

Intrare
-5
1 2 3
Ieșire
Datele nu corespund restricțiilor impuse.

Exemplul 3[edit]

Intrare
6
1 1 1 1 1 1
Ieșire
Datele sunt introduse corect.
1



Rezolvare[edit]

<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]

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.