#P15368. [UOI2026] Guess the Number
[UOI2026] Guess the Number
当前没有测试数据。
题目描述
有一个隐藏的整数 (),且 不被 整除。你的任务是找出这个数。
你可以提出如下形式的询问:选择一个整数 ()。作为回答,你将得到数 的首位数字。
一个正整数的首位数字是指其十进制表示中最靠左的那一位数字。例如,数 、、 的首位数字分别是 、、。
你需要找出隐藏的整数 。对于每个测试用例,你至多可以使用 次询问。
输入格式
第一行包含两个整数 和 () —— 测试用例的数量以及每个测试用例中允许使用的最大询问次数。
交互方式
在每个测试用例中,都隐藏着一个独立的数 。
若要发起询问,请输出 $$\texttt{? } x$$,其中 。
作为对询问的回应,裁判程序会输出一个整数 () —— 数 的首位数字。
在输出询问后,请不要忘记输出一个换行符并刷新输出缓冲区。否则,你将收到 (超出时间限制)的判决。要刷新缓冲区,请使用:
- C++ 中的 或 ;
- Java 中的 ;
- Pascal 中的 ;
- Python 中的 。
当你确定隐藏的数 后,请输出 $$\texttt{! } n$$。
在此之后,如果这是最后一个测试用例,你必须终止你的程序。否则,你应当继续与下一个测试用例进行交互。
是你的程序在一个测试用例中最多可以使用的 询问次数。输出形如 的答案不计入询问次数。
请注意,如果你的询问不合法,交互器会输出 并终止程序。询问在以下情形下被认为不合法:
- 不满足约束 ;
- 当前测试用例中的询问次数超过了 ;
- 答案 不正确。
如果你读到了 ,请立即终止你的程序,以便收到 (答案错误)的判决,而非其他不可预期的判决。
输出格式
无
输入输出样例 #1
输入 #1
1 28
1
6
输出 #1
? 1
? 59
! 11
说明/提示
考虑这个例子。假设在该例子中额外已知隐藏的数小于 。
在询问 并得到回答 后,我们得知隐藏数的首位数字是 。
在询问 并得到回答 后,我们得知隐藏数与 的乘积的首位数字是 。
在所有小于 且不被 整除的数中,只有 同时满足这两个条件。因此,样例中的答案为 。
计分
- ( 分):;
- ( 分):;
- ( 分):;
- ( 分):;
- ( 分): 是完全平方数;
- ( 分):;
- ( 分):;
- ( 分):;
- ( 分):;
- ( 分):无额外限制。
一个解答仅当对其所属子任务中的每一个测试用例,都能在不超过 次询问的条件下正确找出数 ,才算通过该子任务。
翻译由 DeepSeek V4 Pro 完成