看完题解,发现我ac的好唐
查看原帖
看完题解,发现我ac的好唐
577918
liyuan2008楼主2024/10/10 22:19
#include<math.h>
using namespace std;
long long k;
long long n;
long long x;
void d(long long xx,long long kk){
	int a=0;
	for(int i=1;i<=xx;i++){
	    a+=pow(2,i);
	}
	if(a==kk){
		for(int i=xx;i>=1;i--){
			int daan=pow(2,i);
			cout<<daan<<" ";
		}
	}
	else{
		long long cishu;
		long long shu=kk-pow(2,xx);
		int daan=pow(2,xx);
		cout<<daan<<" ";
		for(int i=1;i<=kk;i++){
		    if(pow(2,i)>shu){
			cishu=i-1;
			break;
		    }
		}
        d(cishu,shu);
	}
}
int main(){
    cin>>k;
	for(int i=0;i<k;i++){
		if(k==2*i+1){
		cout<<"-1";
			n=1;
			break;
			
	    }
	}
	if(n!=1){
	    for(int i=1;i<=k;i++){
		    if(pow(2,i)>k){
			    x=i-1;
		    	break;
	    	}
    	}
        d(x,k);
    }
}```
2024/10/10 22:19
加载中...