2 条题解
-
-3
#A0585. 猜数字作弊 ID: 4488 传统题 文件IO:guess 2000ms 512MiB 尝试: 189 已通过: 29 难度: 8 上传者:
root 题目描述 33DAI 写了一个一段二分猜数字的程序:
#include <bits/stdc++.h> using namespace std; int l, r, x; int main() { cin >> l >> r; cin >> x; int cnt = 0; while (l <= r) { cnt++; int mid = (l + r) / 2; if (mid == x) { cout << cnt; break; } if (mid < x) l = mid + 1; if (mid > x) r = mid - 1; } return 0; } 33DAI 想让你帮他一起造一组数据,他会告诉你他决定的 � l 和 � r,你需要选择一个 � ∼ � l∼r 之间的数作为 � x。
显然选择不同的数,上面程序的输出可能不同,请你看看 � ∼ � l∼r 中有几个数可以得到最大的输出。
输入格式 输入一行,为空格隔开的两个数 � , � l,r。
输出格式 输出 � ∼ � l∼r 中有几个数可以得到最大的输出。
输入数据 1 1 10 输出数据 1 3 样例 1 解释 1 ∼ 10 1∼10 作为 � x 时,对应输出分别为 3 , 2 , 3 , 4 , 1 , 3 , 4 , 2 , 3 , 4 3,2,3,4,1,3,4,2,3,4。
输入数据 2 1 100 输出数据 2 37 输入数据 3 333 33333 输出数据 3 234 输入数据 4 1 100000000 输出数据 4 32891137 数据规模与约定 对于 100 % 100% 的数据, 1 ≤ � ≤ � ≤ 10 8 1≤l≤r≤10 8 。
子任务 1(10 分):保证 �
� l=r。 子任务 2(20 分):保证 � − �
3 r−l=3。 子任务 3(30 分):保证 � ≤ 10 5 r≤10 5 。 子任务 4(40 分):没有特殊限制。
- 1
信息
- ID
- 4488
- 时间
- 2000ms
- 内存
- 512MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 210
- 已通过
- 29
- 上传者