题解 | #求最大连续bit数#
求最大连续bit数
https://www.nowcoder.com/practice/4b1658fd8ffb4217bc3b7e85a38cfaf2
题目估计是想考二分法,以下是二分法解答。
def fun(): a = bin(int(input().strip()))[2:] res_range = [0, len(a)] # 结果应在的范围 while True: # 二分法的范围已经够小了就暴力遍历 if res_range[1] - res_range[0] < 5: for i in range(res_range[1], res_range[0]-1, -1): if i*'1' in a: print(i) return # 二分过程 mid = sum(res_range) // 2 if mid * '1' in a: res_range = [mid, res_range[1]] else: res_range = [res_range[0], mid] fun()