70分求助DAOLAO帮忙看看
查看原帖
70分求助DAOLAO帮忙看看
488809
LIASPO楼主2021/5/21 22:53
#include<bits/stdc++.h>
using namespace std;
int main(){
	long long a,d[100]={0};
	cin>>a;
	if(a%2==1){//判断是否为奇数 
		cout<<"-1";
		return 0;
	} 
	long long  i=1,s=0;
	while(i<=a){ 
		i=i*2;
		s++;
	}
	i/=2;
	s--;
	long long  n=0,s1=s,g=0;
	n+=pow(2,s1);
	d[0]=pow(2,s1);			
	if(n==a){
	  cout<<n;
	  return 0;
	 }
	long long j;
	while(n<=a){
		for(int i=s1-1;i>=1;i--){
	    	 j=pow(2,i);
		     //cout<<j<<" ";
			 if(n+j==a){	
			    g++; 
				d[g]=j;		
				goto k;
			}
		}
		j=pow(2,s1-1);
		n+=j;
		g++;
		d[g]=j;
		s1--;
		if(n==a){
	      goto k;
	 }
	}
	k: 
	for(int i=0;i<=g;i++){
		cout<<d[i]<<" ";
	}
	return 0;
}
2021/5/21 22:53
加载中...