0439 - Fact Zero

De la Universitas MediaWiki

Cerinţa

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

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

Date de ieşire

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

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

Exemplu

Intrare
13
Ieșire
2

Explicație

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

Rezolvare

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.")

Explicație rezolvare

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.