0306 - Zerouri: Difference between revisions
mNo edit summary |
|||
Line 22: | Line 22: | ||
flag = False | flag = False | ||
if numar.isdigit(): | if numar.isdigit(): | ||
if 0 < | if 0 < int(numar) <= 100: | ||
flag = True | flag = True | ||
return flag | return flag | ||
def validare_date_numere(n, numere): | |||
def validare_date_numere(n): | |||
flag = False | flag = False | ||
if | if len(numere) == n and all(num.isdigit() and int(num) > 0 for num in numere): | ||
flag = True | flag = True | ||
return flag | return flag | ||
def nr_zerouri( | 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() | |||
num | 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> | </syntaxhighlight> |
Revision as of 19:15, 18 March 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
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>