本文主要是介绍【华为OJ】求最大连续bit数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
功能: 求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1
输入: 一个byte型的数字
输出: 无
返回: 对应的二进制数字中1的最大连续数
输入描述:
输入一个byte数字
输出描述:
输出转成二进制之后连续1的个数
输入例子:
3
输出例子:
2
题目分析
- 方法一:将输入数字转换成二进制,统计连续1的个数中最大的那个(这个大概是最先想到的吧)
- 方法二:对输入数字做位移运算,然后与原数相与(byte&=byte<<1)
题目代码
方法一:
#include<iostream>
using namespace std;
int main(){int n,max=0,count=0;while(cin>>n){max=0,count=0;while(n){if(n%2!=0)count++;elsecount=0;if(count>max)max=count;n/=2;}cout<<max<<endl;}return 0;
}
方法二:
#include<iostream>
using namespace std;
int main(){int n,i=0;while(cin>>n){i=0;while(n!=0){n=n&(n<<1);i++;}cout<<i<<endl;}return 0;
}
题目来源
https://www.nowcoder.com/ta/huawei
这篇关于【华为OJ】求最大连续bit数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!