简单发个答案
2025-09-05 20:51:06
发布于:重庆
0阅读
0回复
0点赞
#include <iostream>
#include <vector>
using namespace std;
int main() {
long long n;
cin >> n;
// 奇数不可能有优秀拆分
if (n % 2 != 0) {
cout << -1 << endl;
return 0;
}
// 处理偶数情况
vector<long long> parts;
long long m = n / 2;
long long base = 1;
// 对m进行二进制分解
while (m) {
if (m & 1) {
parts.push_back(base * 2);
}
m >>= 1;
base <<= 1;
}
// 从大到小输出结果
for (int i = parts.size() - 1; i >= 0; i--) {
cout << parts[i];
if (i > 0) cout << " ";
}
cout << endl;
return 0;
}
这里空空如也
有帮助,赞一个