# PBinfo #4310 – echilibrat1_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 număr par de cifre si are numărul de cifre pare egal cu numărul de cifre impare. De exemplu 3427 este echilibrat, iar 2333 nu este.
Se vor scrie și apela următoarele funcții recursive:


cif_pare care calculează numărul de cifre pare ale numărului primit ca parametru
cif_impare care calculează numărul de cifre 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 cif_pare și cif_impare se poate folosi o funcție recursivă cu doi parametri referință pentru a calcula numărul de cifre pare, respectiv numărul de cifre impare.

Exemplu:
Intrare

56 71
Ieșire

509
Explicație
În intervalul [56,71] numerele echilibrate sunt 56, 58, 61, 63, 65, 67, 69, 70, iar suma lor este 509.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
void cifre(int n, int &i, int &p)
{
    if(n<10)
        if(n%2==0) { p=1; i=0; }
        else { i=1; p=0; }
    else
    {
        cifre(n/10,i,p);
        if(n%2==0) p++;
        else i++;
    }
}
int suma(int a, int b)
{
    if(a>b) return 0;
    else
    {
        int i,p;
        cifre(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/4310)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/4310/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-4310/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
