P7071优秀的拆分

fffngzzh  •  4年前


位运算永远的神

#include<bits/stdc++.h>
using namespace std;
int a[404],step=0;//step用来统计a数组的元素数量
int main()
{
    //freopen("power.in","r",stdin);
    //freopen("power.out","w",stdout);
    int n;
    cin>>n;//标准输入
    if(n&1)//第一位是否为1决定了它是奇数还是偶数
    {
        cout<<"-1"<<endl;
        return 0;
    }
    for(int i=2;n>0;i<<=1)//i表示这一位在十进制中表示的数
    {
        n=(n>>1);//一位一位枚举
        if(n&1)//哪一位是1
        {
            a[step++]=i;//就存数组里
        }
    }
    for(int i=step-1;i>=0;i--)
    {
        cout<<a[i]<<" ";//记住要从大到小输出
    }
    cout<<endl;
    return 0;
}

评论: