0306 - Zerouri

From Bitnami MediaWiki
Revision as of 18:46, 15 March 2023 by Alexandra Leș (talk | contribs)

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) <= 1_000_000_000:
           flag = True
   return flag


def validare_date_numere(n):

   flag = False
   if 0 <= int(n) <= 100:
       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.")

</syntaxhighlight>