View Code of Problem 3700

#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.


Back to problem 3700