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 ”total_zerouri”, reprezentând valoarea calculată.

Restricții și precizări

  • 0 ⩽ n ⩽ 100
  • 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) <= 100:
            flag = True
    return flag

def validare_date_numere(n, numere):
    flag = False
    if len(numere) == n and all(num.isdigit() and int(num) > 0 for num in numere):
        flag = True
    return flag

def nr_zerouri(numar):
    total_zerouri = 0
    while numar % 10 == 0:
        total_zerouri += 1
        numar //= 10
    return total_zerouri

def main():
    n = input("Introduceti numarul de numere: ")
    if validare_date_numar(n):
        n = int(n)
        numere = input("Introduceti numerele separate prin spatiu: ").split()
        if validare_date_numere(n, numere):
            print("\nDatele de intrare corespund restrictiilor impuse.\n")
            produs = 1
            for num in numere:
                produs *= int(num)
            total_zerouri = nr_zerouri(produs)
            print("Numarul de zerouri de la sfarsitul produsului este:", total_zerouri)
        else:
            print("Datele de intrare nu corespund restrictiilor impuse.")
    else:
        print("Datele de intrare nu corespund restrictiilor impuse.")

if __name__ == "__main__":
    main()