acm hnu 10038 进制转换

Lowest Bit
Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB
Total submit users: 257, Accepted users: 238
Problem 10038 : No special judgement
Problem description
Given an positive integer A (1 <= A <= 10^9), output the lowest bit of A. For example, given A = 26, we can write A in binary form as 11010, so the lowest bit of A is 10, so the output should be 2. Another example goes like this: given A = 88, we can write A in binary form as 1011000, so the lowest bit of A is 1000, so the output should be 8.

Input
Each line of input contains only an integer A (1 <= A <= 109). A line containing "0" indicates the end of input, and this line is not a part of the input data.

Output
For each A in the input, output a line containing only its lowest bit.

Sample Input
26
8
0
Sample Output
2
8
Problem Source
HNU 1'st Contest

#include  < stdio.h >
#include 
< math.h >

int  getbits( int );
main()
{
    
int  n;
    scanf(
" %d " , & n);
    
while (n != 0 ){
        printf(
" %.0f " ,pow( 2 ,getbits(n)));
        scanf(
" %d " , & n);
    }

    
return   0 ;
}

int  getbits( int  n)
{
    
if (n == 1 ) return   0 ;
    
int  tmp = n,i = 0 ,s[ 100 ];
    
for  (i  =   0 ;i < 100 ;i ++ )s[i] =- 1 ;
    i 
=   0 ;
    
while ( 1 ){
        
if ( (s[i ++ ] = tmp % 2 ==   1 ) return  i - 1 ;        
        tmp 
=  tmp / 2 ;
    }
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值