@[lsj2009](/user/468657) 谢谢
by skyark1214 @ 2021-12-26 14:46:11
@[lsj2009](/user/468657) 依旧WA
by skyark1214 @ 2021-12-26 14:48:10
@[skyark1214](/user/577422)
```cpp
#include<bits/stdc++.h>
using namespace std;
int b[10001];
int power(int a,int b) { //a^b
int ans=1;
do {
if(b&1)
ans*=a;
a*=a;
}while(b>>=1);
return ans;
}
int main() {
int a;
cin>>a;
int i=0;
if(a%2!=0) {
cout<<"-1";
exit(0);
}
while(a!=0) {
b[i]=a%2;
a=a/2;
++i;
}
for(int j=i; j>=0; --j) {
if(b[j]!=0){
cout<<power(2,j)<<" ";
}
}
return 0;
}
```
[AC](https://www.luogu.com.cn/record/65833732)
by lsj2009 @ 2021-12-26 14:52:38
不是能过吗?
by lsj2009 @ 2021-12-26 14:52:55
@[lsj2009](/user/468657)
sorry,我可能敲错了,总之谢谢大佬(QQ:2292282309)
by skyark1214 @ 2021-12-26 14:55:20
@[lsj2009](/user/468657) 何必要这么麻烦啊?
$2^k=(1\text<\text<k)$ 啊,自己写个 power 还容易错,还慢。。。
by int64 @ 2021-12-26 15:21:09
```cpp
#include<bits/stdc++.h>
using namespace std;
int b[10001];
int main() {
int a;
cin>>a;
int i=0;
if(a%2!=0) {
cout<<"-1";
exit(0);
}
while(a!=0) {
b[i]=a%2;
a=a/2;
++i;
}
for(int j=i; j>=0; --j) {
if(b[j]!=0){
cout<<(1ll << j)<<" ";
}
}
return 0;
}
//WA,有啥问题???
```
by int64 @ 2021-12-26 15:21:20
@[int64](/user/360331) 学到了
by lsj2009 @ 2021-12-26 15:21:49
不过话说位运算是 $O(1)$ 吗? 谢谢大佬。
by lsj2009 @ 2021-12-26 15:22:32
@[lsj2009](/user/468657) 撕,为啥我的位运算比你的 O(n) 快速幂还慢啊 /yiw
by int64 @ 2021-12-26 15:22:50