想请各位大佬看看,为什么会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;
}