**有可能**是
在你的$x$减去$ppp(x)$后$x$过小导致for循环条件为false
比如说
$x$=$30$ $i$=$0$
$x$=$14$ $i$=$1$
$x$=$6$ $i$=$2$
$x$=$2$ $i$=$3$
这个时候$i$就大于$x$导致输出不了$2$
(表达可能有些不清晰但希望有帮助qwq) @[Collapse_](/user/1188960)
by Just_int_mian @ 2023-11-05 23:00:36
@[Collapse_](/user/1188960)
改完后的代码:
```cpp
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll ppp(ll n){
for(ll i=0;i<=n;i++){
if(pow(2,i)>n){
return pow(2,i-1);
break;
}else if(pow(2,i)==n){
return pow(2,i);
break;
}
}
}
int main(){
ll x;
cin>>x;
if(x%2!=0) cout<<-1;
else{
for(ll i=0;;i++){
cout<<ppp(x)<<" ";
x-=ppp(x);
if(x==0)
break;
}
}
return 0;
}
```
by ethanzyz @ 2023-11-05 23:04:33