想必大家对二分已经了如指掌了吧,二分在日常生活中最常见的就是玩猜数字游戏了,当我们给定一个范围,那么我们一定会在x个次数内猜出数字是几,如果用二分的方法,那么这个范围是固定的,所以现在给定一个范围,求解x的次数范围。 输入格式: 给定a,b两个整数(-1e9 <= a, b <= 1e9),a和b表示范围[a, b] 输出格式: 输出x的次数范围
时间: 2024-02-13 08:05:10 浏览: 27
这道题目可以使用二分的思想,对于给定的范围 [a, b],我们可以对其中的任意一个数进行猜测,如果猜测错误,我们就会知道目标数字在另一半的范围内,然后在另一半范围内继续猜测,直到猜测正确为止。
因此,我们可以考虑对于范围 [a, b],通过二分的方式来计算猜测的次数范围。
具体的实现步骤如下:
1. 读入给定的范围 a 和 b。
2. 定义一个变量 n,表示猜测的次数。
3. 定义两个变量 l 和 r,分别表示当前猜测的范围左端点和右端点。初始时,l 和 r 分别为 a 和 b。
4. 使用循环进行二分,每次猜测中点 mid = (l + r) / 2,然后根据猜测结果更新范围的左右端点。如果猜测的数字比目标数字小,则更新左端点为 mid + 1;否则更新右端点为 mid - 1。
5. 在循环结束后,n 的范围为 [log2(b - a + 1)]+1,其中 [log2(b - a + 1)] 表示不包括最高位的二进制位数,+1 表示需要再猜测一次才能确定目标数字。
6. 输出结果。
下面是代码实现:
```c
#include <stdio.h>
#include <math.h>
int main() {
int a, b;
scanf("%d %d", &a, &b);
int n = ceil(log2(b - a + 1)) + 1;
printf("%d", n);
return 0;
}
```
其中,`ceil()` 函数用于对小数向上取整,`log2()` 函数用于计算以 2 为底的对数。
相关问题
isk 又一次落入了地下世界,由于之前的经历,她对 $n$ 个结点,$m$ 条双向道路地下世界了如指掌。 Frisk 的体力为 $K$ ,每走 $1$ 长度,体力就会下降 $1$ 。如果在一条道路的中间体力降为 $0$ 了,那么 Frisk 就永远也出不去了。 当然,地图中有一些结点里有存档点,当 $a_i=1$ 时表示第 $i$ 号结点有存档,否则就没有。如果她到了存档点可以立即回复满体力。 Frisk 当然知道在体力允许的情况下从 $1$ 号结点(Ruins)到 $n$ 号结点(屏障)的最短路径,但是她想考考你这个路径是多少。 如果不能到达,输出-1。
这个问题可以使用Dijkstra算法来解决。下面是解决问题的步骤:
1. 初始化一个数组`dist`,其中`dist[i]`表示从起点到第i个结点的最短路径长度,初始值为正无穷大。
2. 初始化一个优先队列`pq`,用于存储待处理的结点。将起点1加入`pq`,并将`dist[1]`设置为0。
3. 当`pq`不为空时,执行以下循环:
- 从`pq`中取出距离起点最近的结点`u`。
- 遍历结点`u`的所有相邻结点`v`,计算通过结点`u`到达结点`v`的路径长度`new_dist`。
- 如果`new_dist`小于`dist[v]`,则更新`dist[v]`为`new_dist`,并将结点`v`加入`pq`。
4. 循环结束后,检查终点n的最短路径长度是否为正无穷大。如果是,则说明无法到达终点,返回-1;否则,返回dist[n]作为最短路径长度。
这样就可以求得从1号结点到n号结点的最短路径长度。请问还有其他问题吗?
1-初识: yuanrenxue
初识yuanrenxue是在一次线上学习的交流中,我注意到了他的回答和评论总是深入透彻,对问题有着独到的见解。我对他的学识和思维方式产生了浓厚的兴趣,于是开始主动与他交流讨论。在交流中,我发现yuanrenxue不仅对专业知识了如指掌,还十分乐于分享和帮助他人,给予我的印象非常深刻。
在与yuanrenxue的交流中,我了解到他对于知识的渴望和求知欲望与我非常相似,我们之间有着共同的兴趣爱好和学术追求。我们常常在专业领域进行深入的讨论,互相交流学习,从中受益匪浅。
我发现yuanrenxue不仅是一个出色的学者,还是一个有着丰富阅历和渊博知识的人。他的见解总是能够启发我,让我有新的认识和思考。我非常感激有机会能够结识yuanrenxue,并期待未来与他共同探讨更多有趣的话题,一起不断进步。
与yuanrenxue的交流不仅是学术上的相互学习,更是一次知识和思想的碰撞,让我受益匪浅。我对他怀有极大的敬意和钦佩之情,希望我们的友谊能够长久下去。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)