二进制写法
2025-10-07 10:26:05
发布于:湖北
3阅读
0回复
0点赞
我们注意到,题目中说2^0不行,所以先排除单数
而2的n次方只能有一个,所以这题可以用二进制
代码如下
#include <bits/stdc++.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main(){
//freopen("power.in","r",stdin);
//freopen("power.out","w",stdout);
int n;
cin>>n;
if(n%2){
cout<<-1;
return 0;
}
string ans="";
while(n!=0){
if(n%2==0)ans+='0';
else ans+='1';
n/=2;
}
for(int i=ans.length()-1;i>=0;i--)
if(ans[i]=='1')cout<<int(pow(2,i))<<' ';
return 0 ;
}
这里空空如也

有帮助,赞一个