269
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
#include <bits/stdc++.h> using namespace std; int a[33] , cnt , f[33]; int main() { int n , m = 0 , p = 1; cin >> n; if(n == 0) a[++cnt] = 0; while(n) { a[++cnt] = n % 2; n /= 2; } for(int i = 1 ; i <= cnt ; i++) { if(a[i]==0) f[i] = 1; else f[i] = 0; } for(int i = 1 ; i <= cnt ; i++) { m = m + p*f[i]; p *= 2; } cout << m; return 0; }
Comentarii