fbpx

Problema #122 – CifreBinare – Rezolvari PBInfo

de Mihai-Alexandru

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.

#include <bits/stdc++.h>

using namespace std;

int main()
{
    int a, b;
    cin >> a >> b;
    int cnta = 0, cntb = 0;
    int ca = a , cb = b;
    while(a){
        cnta = cnta + (a % 2);
        a/=2;
    }
    while(b){
        cntb = cntb + (b % 2);
        b/=2;
    }
    if(cnta == cntb)
        cout << min(ca, cb);
    else if(cnta < cntb)
        cout << cb;
    else
        cout << ca;
    return 0;
}
Comentarii

S-ar putea sa iti placa