随机选择 1 ~100 的一个整数 n,通过某种规则判断这个数 n 是多少。
规则如下:给定当前的数字范围[a, b],选择其中间的数 m=(a+b)/2,判断 m 和 n 的大小关系。如果 m = n,则表示猜对了,如果 m > n,则在 [a, m-1] 中继续判断,如果 m < n,则在 [m+1, b] 中继续判断。如果数字范围 [a, b] 的中间数 m 不是整数,则向上取整,例如 [1, 4],则 m = 3。如果数字范围满足 a = b,那么数 n 一定满足 n = a = b,此时不需要继续猜数。
初始的数字范围是 [1, 100]。现在有一个猜数机器,按照上述的规则进行猜数,那么这个猜数机器需要猜几次?
输入
一个整数,范围是 1 ~ 100(包含1和100)
输出
一个整数,表示按照题目的规则猜数,猜对结果时总共猜数的次数。
import math
n=int(input())
start=1
end=100
m=math.ceil((start+end)//2)
cnt=1
while start<=end:
if m==n:
break
if m>n:
end=m-1
else:
start=m+1
m=math.ceil((start+end)//2)
cnt+=1
print(cnt)
from math import ceil
n=int(input())
a=1
b=100
c=0
while a<=b:
m = ceil((a + b) / 2)
if a<b:
if n > m:
a = m + 1
c = c + 1
elif n < m:
b = m - 1
c = c + 1
else:
c = c + 1
break
else:
break
print(c)