求一个int类型数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1
数据范围:数据组数:1\le t\le 5\1≤t≤5 ,1\le n\le 500000\1≤n≤500000 
进阶:时间复杂度:O(logn)\O(logn) ,空间复杂度:O(1)\O(1) 
输入描述:输入一个int类型数字
输出描述:输出转成二进制之后连续1的个数
输入:200
输出:2
说明:200的二进制表示是11001000,最多有2个连续的1。
def exam(num):
    n=num
    on = str(bin(n))[2:]
    # 0b前两位无需做判断
    # print('on: ',on)
    # 0b11001000 200
    # 0b10 2
    # 499999 0b1111010000100011111
    
    # 初始化配置计数变量cnt为1,后一位和前一位判断是否相等,如相等则加1
    # cnt默认为1
    cnt = 1
    # 考虑到n取值为1时,1的个数只有1个,兼容1则默认big=1
    big = 1
    for i in range(1,len(on)):
        # print(on[i])
        # 避免超出len长度问题,范围从1开始,和前面0判断,长度为len
        # 实际上i的值为 1开始 len-1结束,这样都判断了
        # 0b0=0=n,的情况题目不需处理,所以默认big可以为1
        if on[i-1] == on[i] == '1':
            cnt += 1
            # print(cnt)
            if big < cnt:
                # 每次有比big还大的则说明至少有2个连续1或N个,则替换cig值
                big = cnt
        elif on[i-1] != on[i]:
            # 判断到先连续3个1然后是0,则cnt计数恢复0,big记录了最大了已经
            cnt = 1
            
    print(big)
    
num = int(input().strip())
exam(num=num)