码迷,mamicode.com
首页 > 其他好文 > 详细

最后一个1

时间:2015-08-25 21:54:36      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

时间限制: 1 Sec  内存限制: 128 MB

提交: 46  解决: 30
[提交][状态][讨论版]

题目描述

对于一个十进制的数字x,将他转化为2进制,他的2进制将由0和1组成,求里面的最后一个1在第几位

输入

第一行输入T,代表T组数据,

接下来T行,每行输入一个X。

0<T<1e7

0<X<1e9

输出

输入x的2进制中最后一个1在第几位,

不存在输出0

样例输入

3
0
3
8

样例输出

0
2
1


#include<stdio.h> 
int main() 
{ 
    int n; 
    scanf("%d",&n); 
    while(n--) 
    { 
        //long long m; 
        int m; 
        int a[1000]; 
        scanf("%d",&m); 
        int i=0; 
        while(m>0) 
        { 
            a[i++]=m%2; 
            m/=2; 
        } 
        int sum=0; 
        for(int j=0;j<i;j++) 
        if(a[j]==0) 
        { 
            sum++; 
        } 
        else break; 
        printf("%d\n",i-sum); 
          
    } 
    return 0; 
} 
/************************************************************** 
    Problem: 1710 
    Language: C 
    Result: 正确 
    Time:700 ms 
    Memory:768 kb 
****************************************************************/


版权声明:本文为博主原创文章,未经博主允许不得转载。

最后一个1

标签:

原文地址:http://blog.csdn.net/l15738519366/article/details/47981669

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!