0306 - Zerouri: Difference between revisions
mNo edit summary |
|||
(3 intermediate revisions by 2 users not shown) | |||
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 == | ||
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 ⩽ | * 0 ⩽ n ⩽ 1.000.000.000 | ||
== Exemplu == | == Exemplu == | ||
; Intrare | ; Intrare | ||
Line 13: | Line 13: | ||
: 10 24 37 46 75 | : 10 24 37 46 75 | ||
; Ieșire | ; Ieșire | ||
: Datele introduse | : 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. | ||
== 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 < | 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): | def validare_date_numere(n, numere): | ||
flag = False | flag = False | ||
if | 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 | ||
def nr_zerouri( | # 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 | |||
num | 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> | </syntaxhighlight> |
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>
- 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
- 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
- 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>