80分求助
查看原帖
80分求助
954973
jyz2012楼主2023/7/10 21:46

提交记录

#include <iostream>
#include <cmath>
using namespace std;
#define ll unsigned long long
ll n,a[30];
ll conto2(int n){
	ll r=n;
	ll totto=0;
	for(ll i=25;i>=1;i--){
//		cout<<"i="<<i<<",";
		if(a[i]>r)continue;
		r-=a[i];
		
		ll pp=pow(10,i);
		totto+=pp;
//		cout<<"totto+="<<pp<<endl;
	}
	return totto;
}
inline void ruwei(){
	for(ll i=1;i<=25;i++){
		a[i]=(ll)pow(2,i);
	}
}
ll qw(ll n,ll w){
	return (ll)n/(ll)pow(10,w-1)%(ll)10;
}
ll wss(ll n){
	for(ll i=1,j=1;;i*=10,j++){
		if(n>=i*10)continue;
		else return j;
	}
}
int main(){
	cin>>n;
	if(n%2){
		cout<<-1<<endl;
		return 0;
	} 
	ruwei(); 
	n=conto2(n);
//	cout<<endl<<endl<<n<<endl;
	ll wsz=wss(n);
//	cout<<wsz<<endl;
	for(int i=wsz;i>=1;i--){
		if(qw(n,i)==1)cout<<a[i-1]<<" ";
	}
	cout<<endl;
	return 0;
}
2023/7/10 21:46
加载中...