题目描述:
求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1
本题含有多组样例输入。
输入描述:
输入一个byte数字
输出描述:
输出转成二进制之后连续1的个数
示例:
输入:
3
5
输出:
2
1
说明:
3的二进制表示是11,最多有2个连续的1。
5的二进制表示是101,最多只有1个连续的1。
解题思路:
这题用bitset将数字转换为二进制格式,再转为string,分析连续1的个数只需要用while循环,即可实现。
测试代码:
#include <iostream> #include <vector> #include <bitset> using namespace std; int getone(int num) { bitset<8> t(num); string s=t.to_string(); int max=0; for(int i=0;i<s.size();++i) { int len=0; while(s[i]=='1') { len++; i++; } if(len>max) max=len; } return max; } int main() { int num; while(cin>>num) { cout<<getone(num)<<endl; } return 0; }