我从未见过如此坑爹之函数
#include<bits/stdc++.h>
using namespace std;
long long a,k,t;
int main(){
cin>>a;
k=log2(a);
if(a%2){
cout<<-1;
return 0;
}
for(int i=k;i>=1;i--){
if(a%2){
cout<<-1;
return 0;
}
if(a==0)break;
t=pow(2,i);
if(a-t<0)continue;
a-=t;
cout<<t<<" ";
}
return 0;
}
AC
#include<bits/stdc++.h>
using namespace std;
long long a,k;
int main(){
cin>>a;
k=log2(a);
if(a%2){
cout<<-1;
return 0;
}
for(int i=k;i>=1;i--){
if(a%2){
cout<<-1;
break;
}
if(a==0)break;
if(a-pow(2,i)<0)continue;
a-=pow(2,i);
cout<<pow(2,i)<<" ";
}
return 0;
}
80分