过不了

P7071 [CSP-J2020] 优秀的拆分

@[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


上一页 | 下一页