正经(?)题解
2026-08-20 14:54:29
发布于:广东
防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视防透视
首先,所谓有没有“优秀的拆分”,其实就是奇数没有优秀的拆分,偶数有!!!
你想想,奇数拆出来,必定有(1),是不是???
所以,这就是个阅读题!
判断代码:
if(n&1){//判断奇数,与n%2效果一样,但比n%2快,推荐使用。
cout<<-1;
return 0;
}
else……
else{
string s;
while(n!=0){
s+=(n%2)+'0';
n/=2;
}
for(int i=s.size()-1;i>=0;i--){
if(s[i]=='1'){
cout<<int(pow(2,i))<<' ';
}
}
}
先转二进制,然后就容易拆了!!!
注意点:
用pow会默认大数用e记法,得强转int。
然后就是完整代码了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#include<bits/stdc++.h>//万恶之源万能头
using namespace std;
int main(){
ios::sync_with_stdio(false);//关闭流同步(增加效率)
cin.tie(nullptr);//解绑cin
cout.tie(nullptr);//解绑cout
int n;
cin>>n;
if(n&1){
cout<<-1;
return 0;
}
else{
string s;
while(n!=0){
s+=(n%2)+'0';
n/=2;
}
for(int i=s.size()-1;i>=0;i--){
if(s[i]=='1'){
cout<<int(pow(2,i))<<' ';
}
}
}
}
时间复杂度
这里空空如也







有帮助,赞一个