LeeBlog

导航

HDU 1196 lowest bit

这题是树状数组的一入门题,lowest bit 就是将相应的十进制转换成二进制,在这个二进制数种从右往左数第一个不为0的位置的权值,有一种简单的做法

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

 比较常规的做法

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

posted on 2011-04-07 13:25  LeeBlog  阅读(231)  评论(0编辑  收藏  举报