偶数就一直减去最接近输入的2的k次方
2023-07-12 14:01:17
发布于:重庆
25阅读
0回复
0点赞
#include <iostream>
#include <math.h>
using namespace std;
int main(){
int x ;
cin >> x;
if (x%2!=0)
{
cout << -1; //奇数直接没
return 0;
}
else{
int arr1[25];
int temp;
for (int i=1;i<25;++i){
temp = pow(2,i);//2的1-24次方存进数组
arr1[i] = temp;
}
for (int k=1;k<25;++k){
if (x<arr1[k]) {//找到最接近的2的k次方,比x大那就是上一个
cout << arr1[k-1] << ' ';
x-=arr1[k-1];//x减去刚刚输出的数
k=1;//重新进入循环
}
if (x==0) break;//x被减成0就跳出循环
}
}
return 0;
}
这里空空如也
有帮助,赞一个