0306 - Zerouri

De la Universitas MediaWiki

Cerinţa

Se dau n numere naturale nenule. Calculaţi numărul de zerouri de la sfârşitul scrierii zecimale a produsului celor n numere.

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

Programul afișează pe ecran numărul ”NRZ”, reprezentând valoarea calculată.

Restricții și precizări

  • 0 ⩽ n ⩽ 1.00
  • 0 ⩽ numar ⩽ 1.000.000.000

Exemplu

Intrare
5
10 24 37 46 75
Ieșire
Datele introduse corespund restricțiilor impuse.
3

Explicație

Produsul celor 5 numere este 30636000, şi se termină cu 3 zerouri.

Rezolvare

def validare_date_numar(numar):
    flag = False
    if numar.isdigit():
        if 0 <= int(numar) <= 1_000_000_000:
            flag = True
    return flag


def validare_date_numere(n):
    flag = False
    if 0 <= int(n) <= 1000:
        flag = True
    return flag

def nr_zerouri(n, numere):
    numere_2 = [0] * n
    numere_5 = [0] * n

    # calculam numarul de factori 2 si 5 pentru fiecare numar
    for i in range(n):
        num = numere[i]
        while num % 2 == 0:
            numere_2[i] += 1
            num //= 2
        while num % 5 == 0:
            numere_5[i] += 1
            num //= 5

    # numaram numarul minim de factori 2 si 5 pentru fiecare numar
    min_2 = min(numere_2)
    min_5 = min(numere_5)

    # adunam toate valorile minime pentru a obtine numarul total de zerouri
    total_zerouri = min_2 + min_5

    return total_zerouri

if __name__ == '__main__':
    n = int(input())
    if validare_date_numere(n):
        print("\nDatele de intrare corespund restricțiilor impuse.\n")
        lista_numere = []
        for i in range(n):
            while True:
                numar = input(f"Introduceți numărul {i + 1}: ")
                if validare_date_numar(numar):
                    lista_numere.append(int(numar))
                    break
                else:
                    print("Numărul introdus nu corespunde restricțiilor impuse.")
        print(f"\nNumărul de zerouri de la sfârşitul scrierii zecimale a produsului: {total_zerouri(lista_numere)}")
    else:
        print("Datele de intrare nu corespund restricțiilor impuse.")