# PBinfo #122 – cifrebinare – Rezolvare C++

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

## Enunț

Cerinţa
Se citesc două numere naturale. Să se afişeze numărul care are mai multe cifre egale cu 1 în reprezentarea în baza 2.

Date de intrare
Programul citește de la tastatură două numere naturale.

Date de ieşire
Programul afișează pe ecran valoarea cerută.

Restricţii şi precizări

cele două numere citite vor fi mai mici decât 2.000.000.000
dacă cele două numere au acelaşi număr de cifre 1 în reprezentarea în baza 2 se va afişa cel mai mic dintre ele

Exemplu:
Intrare

125 1250
Ieșire

125
Explicaţie
Reprezentarea lui 125 în baza 2 este 1111101, cu 6 cifre 1, iar reprezentarea lui 1250 este 10011100010, cu 5 cifre 1. Astfel, 125 are mai multe cifre 1 în reprezentarea în baza 2.

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
    int n, m, cn, cm;
    cin >> n >> m;
    int rn = 0, rm = 0;
    cn = n, cm = m;
    while (cn) rn = rn + cn % 2, cn = cn / 2;
    while (cm) rm = rm + cm % 2, cm = cm / 2;
    if (rn > rm) cout << n;
    else if (rm > rn)cout << m;
        else cout << (n < m ? n : m);
    return 0;
}
```

## Resurse

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