华为的机试题有三道,规则和ACM差不多,但是非常简单。
今年笔试的第一题,比较简单
题意大概是输入一个32位以内的整数,如果从右到左找不到第一个二进制的“1”,如果找到了输出是第几个位置(位置从1开始计)
需要注意的是:1)输入为0是要判断 ;2 )数据类型要能接收 2^32-1 ,C/C++ 要unsigned int 或者 long long ,Java 要是long
代码:
#include<iostream>
#include<cstring>
#include<set>
#include<algorithm>
#include<cstdio>
#include<stack>
#include<map>
using namespace std;
int main() {
unsigned int n;
while (cin>>n) {
if(n==0){
cout<<"-1\n";
continue;
}
int cnt=0;
while(n!=0 && n%2==0){
cnt++;
n>>=1;
}
cout<<cnt<<endl;
}
}