55分。。。

P7071 [CSP-J2020] 优秀的拆分

从大到小孩子~~(我居然把橙题看了那么久)~~![](//图.tk/9)
by flame_soul @ 2022-07-20 18:46:23


@[julihui325](/user/553577)
by flame_soul @ 2022-07-20 18:47:03


```cpp #include<iostream> #include<cstdio> #include<cmath> using namespace std; int a[27]; int main(){ int n,i,m,t; cin>>n; m=n; if(n%2==1||n==0){ cout<<"-1"; return 0; } i=0; while(n){ a[i]=n-n/2*2; i++; n/=2; } for(int j=i-1;j>=1;j--) if(a[j]==1){ t=pow(2,j); cout<<t<<" "; } return 0; } ```
by mese @ 2022-07-20 18:50:11


``` #include<iostream> #include<cstdio> using namespace std; int a[27],ans[10001],tot; int main(){ int n,i,m,t; cin>>n; m=n; if(n%2==1||n==0){ cout<<"-1"; return 0; } i=0; t=2; while(m>0){ i++; m/=2; a[i]=t; t*=2; } // cout<<i<<' '; // for(int j=1;j<=i;j++) // cout<<a[j]<<' '; // cout<<endl; m=n; int len=i,j=i; i=1; m/=2; while(j){ // cout<<m<<' '; if(m%2==1){ ans[++tot]=a[i]; } j=len-i; i++; m/=2; } for(int i=tot;i>=1;i--) cout<<ans[i]<<' '; return 0; } ```
by flame_soul @ 2022-07-20 19:22:44


在你原基础上改的
by flame_soul @ 2022-07-20 19:23:22


谢谢大佬们
by julihui325 @ 2022-07-21 12:55:37


@[ABcED](/user/483314) 在循环里用pow会超时吗
by julihui325 @ 2022-07-21 13:07:04


```latex 这题不会超时啦,不过确实用pow确实也不太好 ```
by mese @ 2022-07-21 13:22:02


``` #include<iostream> #include<cstdio> #include<cmath> using namespace std; int a[27]; int main(){ int n,i,m,t; cin>>n; m=n; if(n%2==1||n==0){ cout<<"-1"; return 0; } i=0; t=2; while(n){ a[i]=n-n/2*2; i++; n/=2; } m=n; int j; for(j=i-1;j>=1;j--){ if(a[j]==1){ cout<<pow(2,j)<<" "; } } return 0; }``` 这次80。。。
by julihui325 @ 2022-07-21 13:27:20


@[ABcED](/user/483314) 哦哦
by julihui325 @ 2022-07-21 13:29:06


| 下一页