1710: 最后一个1

来源:互联网 发布:啄木鸟审计软件 编辑:程序博客网 时间:2024/05/17 09:08

1710: 最后一个1

时间限制: 1 Sec  内存限制: 128 MB
提交: 63  解决: 38
[提交][状态][讨论版]

题目描述

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

输入

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

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

0<T<1e7

0<X<1e9

输出

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

不存在输出0

样例输入

3038

样例输出

021

考察:主要是进制转换

AC代码:

#include<stdio.h>int main(){int t,n;int num,cnt,m,x,y;scanf("%d",&t);while(t--){cnt=0,num=0;scanf("%d",&n);m=n;while(n){x=n%2;if(x==0) cnt++;if(x==1) break;n=n/2;}while(m){y=m%2;num++;m=m/2;}printf("%d\n",num-cnt);}  return 0;} 


0 0