$pow(2,i)$事浮点数,大了会有精度误差。
by NusGhy @ 2020-11-08 16:58:52
**int a[100000];**
爆了,a[30]就够了
by _OJF_ @ 2020-11-08 16:59:59
输入数据:`4`
正确输出:`4`
这个代码的输出:`-1`
by 10circle @ 2020-11-08 17:00:06
而且$n≤10^7$,$2^n$是什么鬼
by NusGhy @ 2020-11-08 17:00:19
@[AT1198_100](/user/311230) 我思路和您差不多,~~可以参考一下~~
```
#include<bits/stdc++.h>
using namespace std;
long long n;
int wei , a[300];
int main() {
cin >> n;
if(n % 2 != 0) {
cout << -1;
fclose(stdin);
fclose(stdout);
return 0;
}
while(n) {
a[wei++] = n % 2;
n /= 2;
}
for(int i = wei; i >= 0 ; i --) {
if(a[i] == 1) {
long long flag = pow(2 , i);
cout << flag << " ";
} else {
continue;
}
}
return 0;
}
```
by ysomething @ 2020-11-08 17:01:06
@[CuCsCsPr_Suhy](/user/225499) 谢了
by AT1198_100 @ 2020-11-08 17:01:35
@[chengzhiyu蒻蒟](/user/241542) thanks
by AT1198_100 @ 2020-11-08 17:02:10
这不是打表就行的嘛
by lsy0908 @ 2020-11-08 17:28:42
~~20分几行代码解决~~......
by 18746326975zhou @ 2020-11-08 19:52:47
每次直接输出 $2^{\lfloor log_2n \rfloor}$
by DarkLuthics @ 2020-11-08 19:55:44