poj 2453 An Easy Problem

来源:互联网 发布:淘宝红人店铺申请 编辑:程序博客网 时间:2024/05/24 05:51

                                          An Easy Problem

#include<iostream>using namespace std;int main(){    int n,k,s;    int i,j,sum;    int flag1,flag2;    int a[100],b[100];    while(cin>>n)    {        if(n==0)        break;        flag1=sum=s=i=j=0,flag2=1;        while(n)        {            a[i++]=n%2;            n=n/2;        }        k=(i--);        while(i>=0)        {            b[j++]=a[i--];        }        for(j=k-1;j>=0;j--)        {            if(b[j]==0&&flag1==0)                continue;            if(b[j]==1)            {                flag1=1;                b[j]=0;                s++;            }            else            {                b[j]=1;                flag2=0;                break;            }        }        for(j=k-1;;j--)        {            if(b[j]!=1)            {                if(!(--s))break;                b[j]=1;            }        }        for(j=0;j<k;j++)        {            if(b[j]==1)            sum+=1<<k-j-1;        }        cout<<sum+flag2*(1<<k)<<endl;    }}


原创粉丝点击