2311. 魔法坚果大百科
1000ms
256MB
简单
二分算法
题目描述
松鼠哈利在翻阅一本《魔法坚果大百科》,他需要在第 15 页到第 45 页之间,快速查找到记载着特定配方的第 $n$ 页。
哈利决定采用二分法进行快速翻页,每次查找的中间值公式为:
$$mid = \lfloor (L + R) / 2 \rfloor$$
其中 $L$ 和 $R$ 分别为当前查找区间的最小页码和最大页码。
每确定一次 $mid$,就算作一次查找。请你计算哈利查找到第 $n$ 页一共需要查找多少次?
输入格式
一行,包含一个正整数 $n$ ($15 \le n \le 45$),表示要查找的页码。
输出格式
一行,输出一个整数,表示查找的次数。
样例 1
输入 (Input)
18
输出 (Output)
3
- 对于所有数据:$15 \le n \le 45$。
- **样例说明**:
初始范围为 $[15, 45]$,要查找的目标为 $18$。
- 第一次:$mid = (15 + 45) / 2 = 30$。因为 $30 \gt 18$,下一步查找范围缩小为 $[15, 29]$。
- 第二次:$mid = (15 + 29) / 2 = 22$。因为 $22 \gt 18$,下一步查找范围缩小为 $[15, 21]$。
- 第三次:$mid = (15 + 21) / 2 = 18$。此时 $mid == 18$,成功找到目标,查找次数为 3。
- **算法提示**:
直接模拟二分搜索的过程,用一个计数器记录循环执行的次数即可。
› 输入 stdin
CtrlShiftEnter
‹ 输出 stdout
错误 stderr
操作成功