296
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 baza2
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