问题链接:HDU1196 ZOJ2417 Lowest Bit。入门训练题,用C语言编写程序。
这个问题从1开始逐步试探即可,然后是:2,4,8,16,......。每次左移1位即可。
AC程序如下:
/* HDU1196 ZOJ2417 Lowest Bit */ #include <stdio.h> int main(void) { int a, v; while(scanf("%d", &a) != EOF) { // 判定结束条件 if(a == 0) break; // 寻找最小2进制数:从1开始试探,然后是1×2,1×2×2,...... v = 1; while(!(a & v)) v <<= 1; // v = v * 2 printf("%d ", v); } return 0; }