这题写了挺长时间,感觉还是写的有点繁琐。
#include<stdio.h> #include<math.h> int count(int x) {//返回二进制x的位数 int i = 0; for (i = 0; x> 0; i++) { x -= pow(2, i); } return i; } int main() { int x; while (scanf("%d", &x) == 1 && x != 0) { int i; int num = count(x); for (i = num - 1; x > 0;i-- ) { if ((x - pow(2, i)) >= 0) x -= pow(2, i); } printf("%.0lf\n", pow(2, i+1)); } return 0; }