专栏文章
题解:P7071 [CSP-J2020] 优秀的拆分
P7071题解参与者 9已保存评论 12
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 12 条
- 当前快照
- 1 份
- 快照标识符
- @miqnwy3q
- 此快照首次捕获于
- 2025/12/04 07:53 3 个月前
- 此快照最后确认于
- 2025/12/04 07:53 3 个月前
思路
看到 的正整数次幂和,想到二进制。
显然,奇数的二进制最后一位是 ,所以其没有“优秀的拆分”,也可以这样理解:若干偶数之和,怎么可能等于奇数呢。
同理,偶数一定有“优秀的拆分”。
结果就是求出这个数中所有二进制上为 的部分,并把它们转化成十进制。
代码
CPP#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;
}
相关推荐
评论
共 12 条评论,欢迎与作者交流。
正在加载评论...