# PBinfo #389 – divizoripariinterval – Rezolvare C++

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

## Enunț

Cerinţa
Se citesc două numere naturale a și b. Să se determine cel mai mic și cel mai mare număr din intervalul [a,b] cu număr maxim de divizori pari şi numărul maxim de divizori pari.

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

Date de ieşire
Programul afișează pe ecran numerele NRD MIN MAX, separate prin exact un spațiu , reprezentând numărul maxim de divizori pari ai numerelor din [a,b], cel mai mic şi respectiv cel mai mare număr din interval cu număr maxim de divizori pari.

Restricţii şi precizări

0 < a < b < 1.000.000.000
b-a ≤ 1000

Exemplu:
Intrare

10 20
Ieșire

4 12 20
Explicație
Numărul maxim de divizori pari pentru numerele din intervalul [10,20] este 4. Numerele din interval cu 4 divizori pari sunt 12, 16 şi 20.

## Cod sursă C++

```cpp
#include <iostream>
using namespace std;
int main() {
    int nrd = -1, maxim, minim;
    int val, a, b, temp, nr;
    cin >> a >> b;
    if (a % 2 == 1) a++;
    for (int i = a; i <= b; i = i + 2) {
        nr = 0;
        int aux = 0, j = i;
        while (j % 2 == 0) j = j / 2, aux++;
        for (val = 1; val * val < j; val = val + 2) 
            if (i % val == 0)
                nr = nr + 2;
        if (val * val == i) nr ++;
        nr = nr * aux;
        if (nr > nrd) {
            nrd = nr;
            minim = maxim = i;
            temp = 1;
        }
        else if (nr == nrd) {
            maxim = i;
            temp++;
        }
    } cout << nrd << " " << minim << " " << maxim;
    return 0;
}
```

## Resurse

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