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