3250 - Numere 77: Difference between revisions

From Bitnami MediaWiki
Am creat de la zero.
 
No edit summary
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
sursa: [https://www.pbinfo.ro/probleme/3250/numere-77]
== Cerinţa ==
== 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.
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.
Line 22: Line 23:


== Rezolvare ==
== 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>
<syntaxhighlight lang="python" line>
Line 59: Line 109:


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


</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 22:29, 15 May 2023

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>

  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>