3250 - Numere 77

From Bitnami MediaWiki
Revision as of 22:29, 15 May 2023 by Petras.du.ioana (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

sursa: [1]

Cerinţa

Se dau două numere naturale primul_numar și al_doilea_numar. Calculați suma numerelor echilibrate din intervalul [primul_numar, al_doilea_numar]. Un număr este echilibrat dacă are suma cifrelor pare egală cu suma cifrelor impare. De exemplu 3467 este echilibrat, iar 8333 nu este.

Date de intrare

Programul citește de la tastatură numerele primul_numar și al_doilea_numar.

Date de ieşire

Programul va afișa pe ecran numărul suma, reprezentând suma numerelor echilibrate din intervalul [primul_numar, al_doilea_numar].

Restricții și precizări

  • 1 ≤ primul_numar ≤ al_doilea_numar ≤ 1.000.000

Exemplu

Intrare
301
402
Ieșire
2097

Explicatie

În intervalul [301, 402] numerele echilibrate sunt 314, 336, 341, 358, 363, 385, iar suma lor este 2097.

Rezolvare

Rezolvare ver. 1

<syntaxhighlight lang="python" line>

def citeste_numerele():

   try:
       primul_numar = int(input("Introduceți primul numar: "))
       al_doilea_numar = int(input("Introduceți al doilea numar: "))
       if primul_numar < 0 or al_doilea_numar < 0:
           print("Numerele trebuie să fie pozitive.")
           exit()
       return primul_numar, al_doilea_numar
   except ValueError:
       print("Datele de intrare trebuie să fie numere întregi.")
       exit()

def calculeaza_suma_echilibrate(primul_numar, al_doilea_numar):

   suma_echilibrate = 0
   for numar in range(primul_numar, al_doilea_numar+1):
       suma_cifre_pare = 0
       suma_cifre_impare = 0
       cifre = str(numar)
       for cifra in cifre:
           cifra_int = int(cifra)
           if cifra_int % 2 == 0:
               suma_cifre_pare += cifra_int
           else:
               suma_cifre_impare += cifra_int
       if suma_cifre_pare == suma_cifre_impare:
           suma_echilibrate += numar
   return suma_echilibrate

def afiseaza_suma_echilibrate(suma):

   print("Datele sunt introduse corect.")
   print("Suma numerelor echilibrate este:", suma)


if __name__ == "__main__":

   numere = citeste_numerele()
   suma = calculeaza_suma_echilibrate(numere[0], numere[1])
   afiseaza_suma_echilibrate(suma)

</syntaxhighlight>

Rezolvare ver. 2

<syntaxhighlight lang="python" line>

  1. citim numerele primul_numar si al_doilea_numar

try:

   primul_numar = int(input("Introduceți primul numar: "))
   al_doilea_numar = int(input("Introduceți al doilea numar: "))
   if primul_numar < 0 or al_doilea_numar < 0:
       print("Numerele trebuie să fie pozitive.")
       exit()

except ValueError:

   print("Datele de intrare trebuie să fie numere întregi.")
   exit()
  1. initializam suma cu 0

suma_echilibrate = 0

  1. calculam suma numerelor echilibrate

for numar in range(primul_numar, al_doilea_numar+1):

   # initializam sumele cifrelor pare si impare cu 0
   suma_cifre_pare = 0
   suma_cifre_impare = 0
   # calculam suma cifrelor pare si suma cifrelor impare ale numarului
   cifre = str(numar)
   for cifra in cifre:
       cifra_int = int(cifra)
       if cifra_int % 2 == 0:
           suma_cifre_pare += cifra_int
       else:
           suma_cifre_impare += cifra_int
   # daca suma cifrelor pare este egala cu suma cifrelor impare, numarul este echilibrat
   if suma_cifre_pare == suma_cifre_impare:
       suma_echilibrate += numar
  1. afisam suma numerelor echilibrate

print("Datele sunt introduse corect.") print("Suma numerelor echilibrate este:", suma_echilibrate)

</syntaxhighlight>