// 这个题直接模拟就行,把数表示成二进制,然后翻转一下,再倒着算出来,就行了
AC代码:
#include<stdio.h> #include<string.h> #define N 100000 int a[N]; int b[N]; int main() { int t; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); int cnt=0; while(n>0) { a[cnt++]=n%2; n/=2; } int sum=0; int i; int x=0; for(i=0;i<cnt;i++) { if(a[i]==0) { x++; } else { break; } } // int sum=0; int k=0; for(i=cnt-1;i>=x;i--) { sum+=(a[i]<<k); k++; } printf("%d\n",sum); } return 0; }