AcWing 2767. 优秀的拆分
原题链接
简单
作者:
大瓜娃子
,
2021-02-09 09:58:52
,
所有人可见
,
阅读 339
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
分析可知奇数一定不是
偶数一定是
对于偶数,二进制最后一位一定是0
using namespace std;
int n;
int main()
{
cin>>n;
if(n%2) cout<<"-1"<<endl;
else
{
vector<int> result;
int i2=1;//表示当先二进制最后一位时2的几次方
while(n)//把n看成二进制 如110010
{
if(n%2==1)
{
result.push_back(i2);
}
i2=i2*2;//二进制向前推进一位
n=n/2; //去当前最后一位
}
for(int i=result.size()-1;i>=0;i--)
{
cout<<result[i];
if(i==0) cout<<endl;
else cout<<" ";
}
}
return 0;
}