1 条题解
-
0
猜数(Guess the Number) 题解
思路分析
本题为函数式交互题。在 区间上对目标数 进行二分查找:每次询问中点
mid = (l + r) / 2,调用int res = Seniorious(mid):若res == 0说明mid == k,直接返回mid;若res == 1说明k < mid,令r = mid - 1;若res == -1说明k > mid,令l = mid + 1。由于 ,最多调用 次Seniorious即可确定答案,且注意不要向标准输出打印任何内容。参考代码
extern "C" int Seniorious(int); extern "C" int Chtholly(int n, int c) { int l = 1, r = n; while (l <= r) { int mid = l + (r - l) / 2; int res = Seniorious(mid); if (res == 0) return mid; if (res > 0) r = mid - 1; else l = mid + 1; } return l; }
- 1
信息
- ID
- 8540
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者