Cerința
Dat fiind un număr natural n
, să se determine numărul natural m
care are are proprietatea că are în reprezentarea în baza 2
biți de 1
pe pozițiile unde n
are biți de 0
și are biți de 0
pe pozițiile unde n
are biți de 1
. De exemplu, dacă n = 346
, atunci m = 165
, deoarece n
se reprezintă în baza 2
prin 101011010
, iar m
prin 010100101
.
Date de intrare
Programul citește de la tastatură numărul n
.
Date de ieșire
Programul va afișa pe ecran numărul m
.
Restricții și precizări
0 ≤ n ≤ 1 000 000 000
Exemplu
Intrare
346
Ieșire
165
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema invbits:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int m, n, k, P;
cin >> n;
m = n;
/// determina numarul bitilor pe care se reprezinta n
k = 0;
if (m == 0) k = 1;
while (m > 0)
{
m /= 2;
k++;
}
/// calculez 2^k - 1
P = (1 << k) - 1;
n = n ^ P;
cout << n;
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #2624 invbits
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2624 invbits de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!