419
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 baza2se 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