题解:P7071 [CSP-J2020] 优秀的拆分
includeCPP · · 题解
遇到这种与
本题即为一个很好的例子。我们把输入的
对于一个二进制数,其十进制即为:对于每一个二进制上为
由于
那么我们模仿上述思考的方法,从小到大依次枚举
本题数据范围
#include<iostream>
#include<cstdio>
using namespace std;
const int N=36;
int a[N];
int res=0;
int main(){
int n;
cin>>n;
if(n&1){
cout<<"-1";
return 0;
}
int p=0;
while(n>=1){
if(n&1){
a[++res]=(1<<p);
}
n>>=1;
++p;
}
for(int i=res;i>=1;i--){
cout<<a[i]<<" ";
}
return 0;
}