这个问题本质上是要求我们模拟题目中描述的二分搜索过程。我们并不知道秘密数字 x 是什么,但我们知道每一次比较的结果。我们可以利用这些结果来逐步缩小搜索范围,就像“天才”那一方所做的一样。
初始化范围:我们和“笨蛋”一样,从相同的初始范围开始。设置下界 l=1 和上界 r=220。220 的具体数值是 1048576。
模拟猜测过程:我们得到了一个包含 20 个字符的结果字符串。我们需要从第一个字符开始,遍历这个字符串,模拟每一轮的决策。
更新边界:对于字符串中的每一个字符(假设是第 i 次猜测的结果),我们执行以下操作:
天才选择了一个秘密整数 x ,其范围为 [1,220] 。笨蛋按固定的二分策略进行 20 次猜测。每次猜测流程如下:
维护当前可能范围 [l,r](初始 l=1,r=220 ,均为闭区间);
取中位数 g=[2l+r+1] 作为本轮猜测;