上题解
2023-07-26 18:55:33
发布于:广东
3阅读
0回复
0点赞
//lolQaBAB
//ACGO:CP002818
//执行用时:6ms
//内存消耗:1.49MB
#include<iostream>
using namespace std;
int n;
long long a[30];
int main()
{
cin>>n;
if(n%2==1)//如果是奇数,那必定有2的0次方,就不是
{
cout<<"-1";
return 0;
}
a[1]=1;
for(int i=2;i<=26;i++)//把2的2到26次方算出来
{
a[i]=a[i-1]*2;
}
for(int i=26;i>=2;i--)//倒着枚举一遍
{
if(n>=a[i])//能减则减
{
n-=a[i];
cout<<a[i]<<' ';
}
if(n==0) return 0;
}
return 0;
}
这里空空如也
有帮助,赞一个