0307 - Zerouri 1: Diferență între versiuni

De la Universitas MediaWiki
(Pagină nouă: == Cerinţa == Se dau n numere naturale nenule. Calculaţi ultima cifră nenulă din scrierea zecimală 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 '''cifra''' , reprezentând valoarea calculată == Restricții și precizări == * 0 ⩽ n ⩽ 100 * 0 ⩽ numar ⩽ 1.000.000.000 == Exemplu == ; Intrare :...)
 
Fără descriere a modificării
Linia 17: Linia 17:
== Explicație ==  
== Explicație ==  
Produsul celor 5 numere este '''30636000''', iar ultima cifră nenulă este '''6'''.
Produsul celor 5 numere este '''30636000''', iar ultima cifră nenulă este '''6'''.
== Rezolvare ==
== Rezolvare ==  
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
def validare_date_numar(numar):
def validare_date_numar(numar):
     flag = False
     flag = False
Linia 29: Linia 28:
def validare_date_numere(n):
def validare_date_numere(n):
     flag = False
     flag = False
     if 0 <= int(n) <= 1000:
     if 0 <= int(n) <= 100:
         flag = True
         flag = True
     return flag
     return flag
Linia 44: Linia 43:
         cifra = produs % 10
         cifra = produs % 10
     return cifra
     return cifra


if __name__ == '__main__':
if __name__ == '__main__':

Versiunea de la data 15 martie 2023 18:36

Cerinţa

Se dau n numere naturale nenule. Calculaţi ultima cifră nenulă din scrierea zecimală 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 cifra , 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.
6

Explicație

Produsul celor 5 numere este 30636000, iar ultima cifră nenulă este 6.

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 ultima_cifra_nenula(numar, numere):

   produs = 1
   for nr in numere:
       produs *= int(nr)
   # determinăm ultima cifră nenulă
   cifra = 0
   while produs % 10 == 0:
       produs //= 10
   if produs > 0:
       cifra = produs % 10
   return cifra

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"\nUltima cifră nenulă : {ultima_cifra_nenula(lista_numere)}")
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")