题解 | #求最大连续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()
查看7道真题和解析