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;
}