正确解题
2025-10-08 11:45:35
发布于:四川
25阅读
0回复
0点赞
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
// 奇数无法拆分(必须用 2^0 = 1)
if (n % 2 == 1) {
cout << -1 << endl;
return 0;
}
bool first = true;
// 从高位往低位枚举,k 最多到 24(因为 2^24 > 1e7)
for (int k = 24; k >= 1; k--) {
int power = 1 << k;
if (power > n) continue; // 防止越界或无效判断
if ((n >> k) & 1) { // 推荐写法:判断第 k 位是否为 1
if (!first) cout << " ";
cout << power;
first = false;
}
}
// 如果没输出任何内容?理论上不会,因为 n>=2 的偶数至少有一位
cout << endl;
return 0;
}
全部评论 2

2025-10-08 来自 四川
0
2025-10-08 来自 四川
0





有帮助,赞一个