3250 - Numere 77
sursa: [1]
Cerinţa[edit | edit source]
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[edit | edit source]
Programul citește de la tastatură numerele primul_numar și al_doilea_numar.
Date de ieşire[edit | edit source]
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[edit | edit source]
- 1 ≤ primul_numar ≤ al_doilea_numar ≤ 1.000.000
Exemplu[edit | edit source]
- Intrare
- 301
- 402
- Ieșire
- 2097
Explicatie[edit | edit source]
În intervalul [301, 402] numerele echilibrate sunt 314, 336, 341, 358, 363, 385, iar suma lor este 2097.
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<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[edit | edit source]
<syntaxhighlight lang="python" line>
- 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()
- initializam suma cu 0
suma_echilibrate = 0
- 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
- afisam suma numerelor echilibrate
print("Datele sunt introduse corect.") print("Suma numerelor echilibrate este:", suma_echilibrate)
</syntaxhighlight>