viernes, 30 de marzo de 2012

2841. Bitwise Reverse, tju

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#define db(a) cout << #a << " = " << a << endl
#define foreach(it, l) for ( typeof(l.begin()) it = l.begin(); it != l.end(); it++) 
#define dbl(i, a) cout << "[" << i << "]" << " = "<< a << ", "; 
#define listar(lista) for(int i = 0; i < lista.size(); i++) { dbl(i, lista[i]);} cout << endl;
using namespace std;
int main() {
 /*freopen("perm.in", "r", stdin);
 freopen("perm.out", "w", stdout);*/
 #ifdef dennisbot
  freopen("in.in", "r", stdin);
 #endif 
 int n;
 while (scanf("%d", &n) != EOF) {
  if (n == 0) {
   break;
  }
  string num = "";
  for (int i = 0; i < 32; i++) {
   if (n >> i & 1) {
    num += "1";
   }
   else num += "0";
  }
  num = num.substr(0, num.find_last_of("1") + 1);
  int t = 1, res = 0;
  for (int i = num.size() - 1; i >= 0; i--) {
   res += (num[i] - 48) * t;
   t *= 2;
  }
  printf("%d\n", res);
 }
 return 0;
}

No hay comentarios:

Publicar un comentario