0306 - Zerouri: Difference between revisions

From Bitnami MediaWiki
No edit summary
 
Line 13: Line 13:
: 10 24 37 46 75
: 10 24 37 46 75
; Ieșire
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: Datele sunt introduse corect.
: 3
: 3
== Explicație ==  
== Explicație ==  
Produsul celor 5 numere este '''30636000''', şi se termină cu '''3''' zerouri.
Produsul celor 5 numere este '''30636000''', şi se termină cu '''3''' zerouri.

Latest revision as of 10:38, 25 April 2023

Cerinţa[edit | edit source]

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[edit | edit source]

Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii.

Date de ieşire[edit | edit source]

Dacă datele sunt introduse corect,pe ecran se va afișa :"Datele sunt introduse corect.",apoi pe un rând nou numărul NRZ, reprezentând valoarea calculată.În cazul contrar,se va afișa pe ecran "Datele nu corespund restricțiilor impuse.".

Restricții și precizări[edit | edit source]

  • 0 ⩽ n ⩽ 100
  • 0 ⩽ n ⩽ 1.000.000.000

Exemplu[edit | edit source]

Intrare
5
10 24 37 46 75
Ieșire
Datele sunt introduse corect.
3

Explicație[edit | edit source]

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

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. Funcție pentru validarea numărului de intrare

def validare_date_numar(numar):

   flag = False
   if numar.isdigit():  # verifică dacă numărul este un întreg pozitiv
       if 0 < int(numar) <= 100:  # verifică dacă numărul se află în intervalul specificat
           flag = True  # dacă toate condițiile sunt îndeplinite, returnează 'True'
   return flag
  1. Funcție pentru validarea listei de numere de intrare

def validare_date_numere(n, numere):

   flag = False
   if len(numere) == n and all(num.isdigit() and int(num) > 0 for num in numere):
       # verifică dacă lista conține exact n numere întregi pozitive
       flag = True
   return flag
  1. Funcție pentru calculul numărului de zerouri dintr-un număr dat

def nr_zerouri(numar):

   NRZ = 0
   while numar % 10 == 0:
       NRZ += 1
       numar //= 10
   return NRZ

if __name__ == "__main__":

   n = input()  # primește numărul de intrare 'n' de la utilizator
   if validare_date_numar(n):  # verifică dacă 'n' este valid
       n = int(n)
       numere = input().split()  # primește lista de 'n' numere de la utilizator
       if validare_date_numere(n, numere):  # verifică dacă lista de numere este validă
           print("\nDatele sunt introduse corect.\n")
           produs = 1
           for num in numere:
               produs *= int(num)  # calculează produsul numerelor din listă
           NRZ = nr_zerouri(produs)  # calculează numărul de zerouri din produs
           print(NRZ)  # afișează numărul de zerouri
       else:
           print("Datele nu corespund restrictiilor impuse.")
   else:
       print("Datele nu corespund restrictiilor impuse.")


</syntaxhighlight>