A50004.[CSP-J 2020]
2025-08-17 17:44:28
发布于:江苏
5阅读
0回复
0点赞
考的就是理解
#include <iostream>
using namespace std;
int n;//输入数据
int bin[31];//二进制位权数组
int main() {
//预处理位权数组
*bin = 1;
for (int i=1; i<31; i++) {
bin[i] = bin[i-1]<<1;
}
cin >> n;
if (n&1) {
/*如果n是奇数
那么n拆分时一定会有1(2^0)
所以n不存在优秀的拆分*/
cout << -1;
return 0;
}
for (int i=30; i>0; i--) {
if (n >= bin[i]) {
//拆分n
n -= bin[i];
cout << bin[i] << ' ';
}
}
return 0;
}
这里空空如也
有帮助,赞一个