0439 - Fact Zero

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

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.