0439 - Fact Zero

From Bitnami MediaWiki

Cerinţa[edit | edit source]

Se citește un număr natural n. Să se determine numărul de zerouri de la sfârșitul scrierii zecimale a numărului n!.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n.

Date de ieşire[edit | edit source]

Programul afișează pe ecran numărul Z, reprezentând numărul de zerouri de la sfârșitul scrierii zecimale a numărului n!.

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 1000
  • n! = 1 * 2 * ... * n

Exemplu[edit | edit source]

Intrare
13
Ieșire
2

Explicație[edit | edit source]

13! = 6227020800, deci se termină cu 2 zerouri.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> def validare_date(n):

   if n < 1 or n > 10**5:
       return False
   return True

def calculeaza_puteri(n):

   nr5 = 0
   nr2 = 0
   i = 5
   while i <= n:
       nr5 += n // i
       i *= 5
   i = 2
   while i <= n:
       nr2 += n // i
       i *= 2
   if nr5 <= nr2:
       return nr5
   else:
       return nr2

if __name__ == '__main__':

   n = int(input("Introduceti n: "))
   if validare_date(n):
       putere = calculeaza_puteri(n)
       print(f"Puterea minima de 2 sau 5 care divide n! fara rest este: {putere}")
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")


</syntaxhighlight>

Explicație rezolvare[edit | edit source]

Acest cod calculează puterea minimă de 2 sau 5 care divide n! fără rest, unde n este un număr dat de la tastatură. Codul verifică mai întâi dacă intrarea este validă, apoi folosește două bucle while pentru a calcula numărul de factori de 5 și 2 care împart n! fără rest. La final, codul compară cele două numere de factori și afișează cel mai mic dintre ele ca putere minimă de 2 sau 5 care divide n! fără rest.