带注释的题解
2023-11-23 14:09:10
发布于:湖北
23阅读
0回复
0点赞
#include <bits/stdc++.h>
using namespace std;
int main()
{
/*
思路:
先判断是不是偶数,如果是奇数就直接-1
如果是偶数转换为二进制,然后输出:
*/
int n;
cin>>n;
if(n%2==1 ){
cout<<-1;
return 0;
}
stack<int> q;
int i=-1;
int no1 = 0;
while(n>0)//转换为2进制
{
int u = n%2;
q.push(u);
n/=2;
i++;
}
while(!q.empty())//开始输出
{
int u = q.top();
q.pop();
if(u!=0){//不为0的就输出
//求幂,不能使用pow,使用pow的时候如果数字太大会变成科学计数法输出,就会报错
int p = i;
int out =1;
while(p>0)
{
out*=2;
p--;
}
cout<<out<<" ";
}
i--;
}
return 0;
}
这里空空如也
有帮助,赞一个