红题都过不了,我也是服了我自己了(就这样打复赛能拿几分啊!!??)
评测记录 (WA#1.2.5.6.7.8)
做法就是将十进制数转换为二进制再倒序输出
代码如下:
#include <bits/stdc++.h>
using namespace std;
#define int long long int
int a[50];
int n;
int cnt;
bool flag=1;
void special()
{
if(n%2==1)
{
cout<<"-1"<<"\n";
flag=0;
}
}
void tentotwo()
{
cnt=1;
while(n)
{
a[cnt]=n%2;
n/=2;
cnt++;
}
}
void print()
{
if(flag==0)
{
cout<<-1<<"\n";
return ;
}
for(int i=cnt-1;i>=1;i--)
{
if(a[i]!=0)
{
cout<<(2<<(i-2))<<" ";
}
}
cout<<"\n";
}
signed main ()
{
cin>>n;
special();
tentotwo();
print();
return 0;
}
感谢dalao帮忙