转二进制从小到大排序就行,
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n;
vector<bool> zh(int n)
{
vector<bool> num;
while (n > 0)
{
num.push_back(n % 2);
n /= 2;
}
return num;
}
int main()
{
cin >> n;
vector<bool> num = zh(n);
if(num[0] == 1)
printf("-1");
else{
for (int i = num.size(); i >= 0; i--)
{
if(num[i] == 1)
cout << (1<<i) << ' ';
}
}
return 0;
}