80pts求助
查看原帖
80pts求助
255762
lyxleo楼主2020/11/17 21:22

想请各位大佬看看,为什么会80分?

#include <bits/stdc++.h>
using namespace std;
long long n;
long long form[25];
long long my_list[10000];
long long temp = 20; 
long long list_len;//手打队列 

inline void first_op(){
	for(long long i=0;i<21;++i){
		long long temp=1;
		for(long long j=0;j<i;++j){
			temp*=2;//计算2的i次方 
		}
		form[i] = temp;
	}
	return;
}


inline long long pos_find(long long x){//从右向左找 
	for(;form[temp] > x && temp > 0;--temp){
		//什么都不做
	}
	if(temp < 1){
		printf("-1");//找不到,中断 
		exit(0);
	}
	return temp;
}

int main(){
	freopen("power.in","r",stdin);
	freopen("power.out","w",stdout);
	first_op();
	scanf("%lld",&n);
	while(n){
		long long pos = pos_find(n);
		n -= form[pos];
		my_list[list_len++] = form[pos];//记录 
	}
	for(long long i=0;i<list_len;++i){
		printf("%lld ",my_list[i]);
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}
2020/11/17 21:22
加载中...