急,谁能回一下啊

P7071 [CSP-J2020] 优秀的拆分

这个只过了50
by yanghaoyu123 @ 2023-07-28 15:32:21


我看看
by Renovations_ @ 2023-07-28 15:57:08


n-=a[i];
by 小明小红 @ 2023-07-28 16:05:14


@[小明小红](/user/368346) 不止这个
by Renovations_ @ 2023-07-28 16:06:08


```cpp #include<iostream> using namespace std; int main(){ int a[30]={2,4,8,16,32,64,128,256,512,1024,2048,4096,8192,16384,32768,65536,131072,262144,524288,1048576,2097152,4194304,8388608,16777216,33554432,67108864,134217728,268435456,536870912,1073741824}; int n; cin>>n; if (n%2==0 and n!=0){ for (int i=29;i>=0;--i){ if (n>a[i]){ cout<<a[i]<<" "; n-=a[i]; } else if (a[i]==n){ cout<<a[i];break; } } } else{ cout<<"-1"; } return 0; } ```
by Renovations_ @ 2023-07-28 16:06:41


@[yanghaoyu123](/user/1048576) 还有你这for成立条件是什么鬼,为什么不n==a[i]是break
by 小明小红 @ 2023-07-28 16:06:57


a数组开的太小,break可优化
by Renovations_ @ 2023-07-28 16:07:32


forif条件错误
by Renovations_ @ 2023-07-28 16:08:12


az
by 小明小红 @ 2023-07-28 16:08:18


位运算 ``` #include<bits/stdc++.h> using namespace std; int n,cnt=2,a[100]; int main(){ scanf("%d",&n); if(n&2!=0){ printf("-1"); return 0; } int i=1; while(cnt<=n){ a[i++]=n&cnt; cnt*=2; } for(int j=i;j>=1;j--){ if(a[j]!=0) printf("%d ",a[j]); } return 0; } ```
by Em0ty @ 2023-08-02 11:16:19


| 下一页