# PBinfo #4311 – echilibrat2_rec – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: Darius

## Enunț

Cerința
Se dau două numere naturale a și b. Calculați suma numerelor echilibrate din intervalul [a,b]. 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 vor scrie și apela următoarele funcții recursive:


sum_pare care calculează suma cifrelor pare ale numărului primit ca parametru
sum_impare care calculează suma cifrelor impare ale numărului primit ca parametru
suma care primește ca parametri numerele a și b și calculează suma numerelor echilibrate din intervalul [a,b]

Date de intrare
Programul citește de la tastatură numerele a și b.

Date de ieșire
Programul va afișa pe ecran numărul s, reprezentând suma numerelor echilibrate din intervalul [a,b].

Restricții și precizări

1 ≤ a ≤ b ≤ 10.000
în locul funcțiilor sum_pare și sum_impare se poate folosi o funcție recursivă cu doi parametri referință pentru a calcula suma cifrelor pare, respectiv suma cifrelor impare.

Exemplu:
Intrare

301 402
Ieșire

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

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
void sume(int n, int &i, int &p)
{
    if(n<10)
        if(n%2==0) { p=n; i=0; }
        else { i=n; p=0; }
    else
    {
        sume(n/10,i,p);
        if(n%2==0) p=p+n%10;
        else i=i+n%10;
    }
}
int suma(int a, int b)
{
    if(a>b) return 0;
    else
    {
        int i,p;
        sume(a,i,p);
        if(i==p) return suma(a+1,b)+a;
        else return suma(a+1,b);
    }
}
int main()
{
    int a,b;
    cin>>a>>b;
    cout<<suma(a,b);
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/4311)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/4311/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-4311/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
