题解:P7071 [CSP-J2020] 优秀的拆分
思路
看到
显然,奇数的二进制最后一位是
同理,偶数一定有“优秀的拆分”。
结果就是求出这个数中所有二进制上为
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n,i=1;
cin>>n;
if(n%2){
cout<<-1;
return 0;
}
while(i<=n) i*=2;
i/=2;
while(n){
n-=i;
cout<<i<<" ";
while(i>n) i/=2;
}
return 0;
}