https://www.luogu.com.cn/problem/P7071
/*
CSP - J 2020 T1 优秀的拆分
https://www.luogu.com.cn/problem/P7071
https://blog.csdn.net/qiaoxinwei/article/details/109569356
https://blog.csdn.net/Brian_Pan_/article/details/109568583
*/
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
//奇数不存在优秀的拆分方案
if(n % 2 == 1)
{
cout << -1 << endl;
return 0;
}
//找到小于等于正整数n的最大的2的正整数次幂m 2^m<=n
int m = 2;
while(m < n) m *= 2;
if(m > n) m /= 2;
while( n )
{
cout << m << ' ';
n -= m; //将m从n中减去
//找到下一个小于等于正整数n的最大的2的正整数次幂m
while(m > n) m /= 2;
}
return 0;
}