#include <stdio.h> int main() { int a; while((scanf("%d",&a))!=EOF) { if(a==0) break; //10进制->2进制 int binary[10000],j=0; while(a!=0) { binary[j++]=(a%2); a/=2; } /*for(int i=j-1;i>=0;--i) printf("%d",binary[i]);*/ //现在,binary中所存即为a的二进制数的倒序排列 int zero_cnt=0; for(int i=0;i<j;++i) { if(binary[i]!=1) zero_cnt++; else break;//遇到1就退出 } //printf("%d",zero_cnt); int lowb[1000],k=1; lowb[0]=1; for(int m=1;m<=zero_cnt;++m) lowb[k++]=0; //现在,lb存入了lowb数组中 /*for(int i=0;i<k;++i) printf("%d",lowb[i]);*/ //2进制->10进制 int sum=0; for(int i=0;i<k;++i) { sum*=2; sum+=lowb[i]; } printf("%d\n",sum); } } |
Double click to view unformatted code.