@[lcyxds](/user/124314) 这个怎么感觉也是错的啊。。。是不是应该改成
```cpp
for(int i=pow(2,k);i>=2;i/=2)
if(!y[k--])
printf("%d ",i);
```
---
```cpp
y[i]
```
存的不是余数吗
by nuo0930 @ 2020-11-19 19:18:04
@[哪吒三太子](/user/335627) 建议自己调
by lcyxds @ 2020-11-19 19:21:01
哦,我错了
by nuo0930 @ 2020-11-19 19:21:33
y存的是二进制
by nuo0930 @ 2020-11-19 19:22:47
建议在没有开动态数组时,把所有变量定义在外面如:
```cpp
#include"stdio.h"
#include"math.h"
int n,y[30],k=0;//这样定义会初始化为0
int main(void){
scanf("%d",&n);
if(n%2==1)
printf("-1");
else{
while(n!=0){
y[k++]=n%2;
n/=2;
}
k--
for(int i=k;i>=2;i/=2)
if(y[k--])
printf("%d ",i);
}
return 0;
}
```
by lihaochen_harold @ 2020-11-19 19:23:41
@[lihaochen_harold](/user/284855)
哎,为什么你们不跑一遍自己的代码再发出来啊
连编译都过不去啊
加上分号也过不了样例啊
by lcyxds @ 2020-11-19 19:36:12
@[lcyxds](/user/124314) 哦,改成
```cpp
#include"stdio.h"
#include"math.h"
int main(void){
int n,y[30],k=0;
scanf("%d",&n);
if(n%2==1)
printf("-1");
else{
while(n!=0){
y[k++]=n%2;
n/=2;
}
k--;
for(int i=pow(2,k);i>=2;i/=2)
if(y[k--])
printf("%d ",i);
}
return 0;
}
```
就好了。
by justinjia @ 2020-11-20 18:43:03
@[justinjia](/user/373226) 对
建议每次做这种简单题的时候推一遍算法,拍几个数据
by lcyxds @ 2020-11-20 19:40:23
@[lcyxds](/user/124314)
>拍几个数据
???
by justinjia @ 2020-11-20 21:53:16
@[justinjia](/user/373226) 就是自己弄几个数据运行一下
by lcyxds @ 2020-11-20 22:54:09