Friday, February 18, 2011

10940 - Throwing cards away II


#include<stdio.h>

int main()
{
    int pwr[]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,262144,524288};
    int n,i,j,k;
    //freopen("in.txt","r",stdin);

    while(scanf("%d",&n)&&n)
    {
        for(i=0;n>pwr[i]&&(pwr[i]^n);i++);

        if(pwr[i]==n)
        {
            printf("%d\n",n);
            continue;
        }

        k=pwr[i-1];
        n=n^k;
        n=n<<1;

        printf("%d\n",n);
    }
    return 0;
}

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.