避雷!
查看原帖
避雷!
1359133
future666楼主2024/8/29 10:56

1.假如输出是0...
2.从大到小!别反编个函数从小到大! 3.不能直接输出pow(2,i),否则。。。↓

8.38861e+06 科学计数法:你好啊

送分题,我这个小菜也只用了15分钟:↓(AC代码)

#include<bits/stdc++.h>
using namespace std;
long long n,a[30];//谁都能看懂!
int main(){
	cin>>n;
	if(n%2==1||n==0) cout<<-1;//不允许2的0次方(1),先去掉奇数和0。
	else{
		for(int i=1;i<=26;i++) a[i]=pow(2,i);//pow(2,i)代表2的i次方。
        for(int i=26;i>=1;i--){
        	if(n!=0&&n-a[i]>=0){
        		n-=a[i];
        		cout<<a[i]<<" ";
			}
			if(n==0) break;//小优化
		}
	}
	return 0;//好习惯
}
2024/8/29 10:56
加载中...