这是蒟蒻csp-j第一题代码,请问大佬能的几分
  • 板块灌水区
  • 楼主明月几时有
  • 当前回复23
  • 已保存回复23
  • 发布时间2020/11/7 14:41
  • 上次更新2023/11/5 08:38:38
查看原帖
这是蒟蒻csp-j第一题代码,请问大佬能的几分
254764
明月几时有楼主2020/11/7 14:41
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
#define ll long long
ll n,a[40],s[40],p;
bool v[40]={0},flag=false;
ll out(ll x){
	for(ll i=1;i<=x;i++) printf("%lld ",a[i]);
	exit(0);
}
void dfs(ll k,ll t){
	if(k==0){
		flag=true;
		out(t-1);
		exit(0);
	}
	for(ll i=p;i>=1;i--){
		if(!v[i]){
			a[t]=s[i];
			v[i]=1;
			dfs(k-s[i],t+1);
			v[i]=0;
		}
	}
}
int main(){
	//freopen("power.in","r",stdin);freopen("power.out","w",stdout);
	scanf("%lld",&n);
	s[0]=1;
	for(ll i=1;i<=32;i++) s[i]=s[i-1]*2;
	if(n%2){
		printf("-1");
		return 0;
	}
	for(ll i=32;i>=1;i--){
		if(s[i]>n) continue;
		if(s[i]==n){
			printf("%lld\n",s[i]);
			return 0;
		}
		else {
			p=i;
			break;
		}
	}
	dfs(n,1);
	if(!flag) printf("-1\n");
	return 0;
}

2020/11/7 14:41
加载中...