猜数(IO交互版)

题目描述

评测机会在区间 $[1,10^9]$ 中选择一个整数,你应该写一个代码来猜测它。你最多可以问评测机 $50$ 个问题。 对于每一次询问,你可以向评测机询问区间 $[1,10^9]$ 中的一个整数,评测机会返回: - 0,如果它为答案(即评测机所选的数字),且程序应该在此之后停止询问。 - -1,如果它小于答案。 - 1,如果它大于答案。 每次询问,你需要向**标准输出**输出一个 $[1,10^9]$ 中的整数,**然后清空缓冲区**。 你可以使用如下语句来清空缓冲区: - 对于 C/C++:`fflush(stdout)`; - 对于 C++:`std::cout << std::flush`; - 对于 Java:`System.out.flush()`; - 对于 Python:`stdout.flush()`; - 对于 Pascal:`flush(output)`; - 对于其他语言,请自行查阅对应语言的帮助文档。 特别的,对于 C++ 语言,在输出换行时如果你使用 `std::endl` 而不是 `'\n'`,也可以自动刷新缓冲区。 然后你需要从**标准输入**中输入一个整数,代表评测机返回的结果。

输入输出格式

输入格式


输出格式


输入输出样例

暂无测试点

说明

#### 数据规模与约定 设 $n$ 为答案。 - 对于 $50\%$ 的数据,保证 $n \leq 51$。 - 对于 $100\%$ 的数据,保证 $1 \leq n \leq 10^9$。 [本题交互库](https://www.luogu.com.cn/paste/uaece7av)。 #### 提示 本题参考程序: ```cpp #include <cstdio> #include <iostream> int main() { for (int l = 1, r = 1000000000, mid = (l + r) >> 1, res; l <= r; mid = (l + r) >> 1) { std::cout << mid << std::endl; std::cin >> res; if (res == 0) { return 0; } else if (res == -1) { l = mid + 1; } else if (res == 1) { r = mid - 1; } else { puts("OvO, I AK IOI"); // this statement will never be executed. } } return 0; } ```