LeeBlog

导航

hdu 1196 Lowest Bit

这题题意是,把数换成二进制,然后从右边数起第一个为1的位置n,然后最小数就是2*( n - 1 ),开始还想用短除法,不过小白说这里可以用A&-A,就可以得出来;

#include<stdio.h>
int main( )
{
    int x,y,z,n;
    while( scanf( "%d",&x ) ,n )
    {
           z = 1;
           int y = 0;
           while( y != 1 )
           {
                  y = x % 2;
                  x = x / 2;
                  z *= 2;
                  }
           printf( "%d\n",z / 2 );
           }
    return 0;
} 

#include<stdio.h>
int main( )
{
    int a;
    while( scanf( "%d",&a ),a )
    {
           a = a & ( -a );
           printf( "%d\n",a );
           }
    return 0;
}

posted on 2011-03-12 23:19  LeeBlog  阅读(186)  评论(0编辑  收藏  举报