题目大意:将一个数转化成2进制数,去掉前导0,然后倒过来再转换成10进制数。
算法思想:
编转换成2进制数,编倒置求和,注意找到表记第一个不为0的数,从此处开始标记。
代码如下:
#include <iostream>
#include <cmath>
#include <cstring>
using namespace std;
int main(){
int T,N;
cin>>T;
while(T--){
cin>>N;
int k=0,sum=0,temp=1,r,flag=0;
while(N){
r=(N%2);
N/=2;
if(r&&!flag) flag=1;
if(N==0) sum+=r;
else if(flag){
sum=(sum+r)*2;
}
}
cout<<sum<<endl;
}
return 0;
}