0306 - Zerouri

From Bitnami 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

<syntaxhighlight lang="python" line> 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()


</syntaxhighlight>