0306 - Zerouri: Difference between revisions

From Bitnami MediaWiki
No edit summary
Line 1: Line 1:
== Cerinţa ==
== 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.
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 ==
== Date de intrare ==
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii.
Programul citește de la tastatură numărul '''n''', iar apoi '''n''' numere naturale, separate prin spaţii.
== Date de ieşire ==
== Date de ieşire ==
Programul afișează pe ecran numărul '''total_zerouri''', reprezentând valoarea calculată.
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 ==
== Restricții și precizări ==
* 0 ⩽ n ⩽ 100
* 0 ⩽ n ⩽ 100
* 0 ⩽ numar ⩽ 1.000.000.000
* 0 ⩽ n ⩽ 1.000.000.000
== Exemplu ==
== Exemplu ==
; Intrare
; Intrare
Line 19: Line 19:
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
# Funcție pentru validarea numărului de intrare
def validare_date_numar(numar):
def validare_date_numar(numar):
     flag = False
     flag = False
     if numar.isdigit():
     if numar.isdigit(): # verifică dacă numărul este un întreg pozitiv
         if 0 < int(numar) <= 100:
         if 0 < int(numar) <= 100: # verifică dacă numărul se află în intervalul specificat
             flag = True
             flag = True # dacă toate condițiile sunt îndeplinite, returnează 'True'
     return flag
     return flag


# Funcție pentru validarea listei de numere de intrare
def validare_date_numere(n, numere):
def validare_date_numere(n, numere):
     flag = False
     flag = False
     if len(numere) == n and all(num.isdigit() and int(num) > 0 for num in numere):
     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
         flag = True
     return flag
     return flag


# Funcție pentru calculul numărului de zerouri dintr-un număr dat
def nr_zerouri(numar):
def nr_zerouri(numar):
     total_zerouri = 0
     NRZ = 0
     while numar % 10 == 0:
     while numar % 10 == 0:
         total_zerouri += 1
         NRZ += 1
         numar //= 10
         numar //= 10
     return total_zerouri
     return NRZ


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


</syntaxhighlight>
</syntaxhighlight>

Revision as of 18:15, 11 April 2023

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

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

  • 0 ⩽ n ⩽ 100
  • 0 ⩽ n ⩽ 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>

  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>