- 问答
求助
- 2021-8-22 14:43:00 @
80pts 题目:https://hydro.ac/d/ccf/p/CSPJ2020A 评测记录:https://hydro.ac/d/ccf/record/6121f121e1b6d183ff865f2a
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a;
cin>>a;
if(a%2) cout<<"-1";
else{
for(int i=1;i<30;i++){
int b=pow(2,i);
if(b>a) {
cout<<pow(2,i-1)<<" ";
a=a-pow(2,i-1);
i=0;
}
if(a==0){
return 0;
}
}
}
return 0;
}
4 条评论
-
CnuhXuyaen LV 8 @ 2021-8-27 10:10:44
pow有精度问题,建议先预处理出 ,或者学习位运算来解决问题
-
2021-8-24 16:00:13@
请改为:
#include <bits/stdc++.h> using namespace std; int main() { int a; cin >> a; if (a % 2) cout << "-1"; else { for (int i = 1; i < 30; i++) { int b = pow(2, i); if (b > a) { cout << int(pow(2, i - 1)) << " "; a = a - pow(2, i - 1); i = 0; } if (a == 0) { return 0; } } } return 0; }
未经过测评论证,但是基本上就是这个意思((
-
2021-8-23 11:57:28@
我们建议将此类问题发至对应题目的讨论区。
-
2021-8-22 18:33:08@
pow有精度问题
- 1