0306 - Zerouri: Difference between revisions

From Bitnami MediaWiki
mNo edit summary
Line 22: Line 22:
     flag = False
     flag = False
     if numar.isdigit():
     if numar.isdigit():
         if 0 <= int(numar) <= 1_000_000_000:
         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 0 <= int(n) <= 100:
     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(n, numere):
def nr_zerouri(numar):
     numere_2 = [0] * n
     total_zerouri = 0
     numere_5 = [0] * n
     while numar % 10 == 0:
        total_zerouri += 1
        numar //= 10
    return total_zerouri


     # calculam numarul de factori 2 si 5 pentru fiecare numar
def main():
     for i in range(n):
     n = input("Introduceti numarul de numere: ")
         num = numere[i]
     if validare_date_numar(n):
         while num % 2 == 0:
         n = int(n)
             numere_2[i] += 1
        numere = input("Introduceti numerele separate prin spatiu: ").split()
             num //= 2
         if validare_date_numere(n, numere):
         while num % 5 == 0:
             print("\nDatele de intrare corespund restrictiilor impuse.\n")
             numere_5[i] += 1
            produs = 1
            num //= 5
             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.")


    # numaram numarul minim de factori 2 si 5 pentru fiecare numar
if __name__ == "__main__":
    min_2 = min(numere_2)
     main()
     min_5 = min(numere_5)


    # adunam toate valorile minime pentru a obtine numarul total de zerouri
    total_zerouri = min_2 + min_5
    return total_zerouri
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"\nNumărul de zerouri de la sfârşitul scrierii zecimale a produsului: {total_zerouri(lista_numere)}")
    else:
        print("Datele de intrare nu corespund restricțiilor impuse.")


</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>