#P15425. Nobody Tells
Nobody Tells
说明
这是一道交互题。
Coola 有两个数 ,还有一个质数 ,我们用如下方法生成一个序列 :
$$\begin{cases} f_{0}=1\\ f_{1}=p\\ f_{i}=(pf_{i-1}+qf_{i-2})\bmod M,&i>1 \end{cases}$$交互库会给定你 和一个参数 ,你最多可以向交互库查询 次:
- 给出一个 ,交互库告诉你 的值。
你的任务是,在最多 次查询之后猜出 的值。特别地,你可以同时猜测两对 ,详见交互细节。
交互细节
本题包含多组测试。
在输入数据的第一行,交互库会给你的程序一个数 ,表示该测试点的测试数据组数。
对于每组测试数据:
交互库会获得该测试数据的 。这同时也说明交互库是非自适应性的。
第一行,交互库向你的程序输入两个数 ,表示模数与询问限制。
对于每次询问,你需要输出 ? i,表示查询 的值。
正常情况下,交互库会向你输入一个 中的整数,表示你查询的 。
若发生以下情况,交互库会立刻终止交互并强制退出程序,该测试点将被判定为不通过:
- 询问次数超过 。
- 不在 的范围中。
在你猜出可能的 后,你需要输出 ! p1 q1 p2 q2,表示你猜测的两对 分别为 与 。此操作不计入询问的 次操作中。特别地,你需要保证四个数都在 的范围中,否则交互库会立刻终止交互并强制退出程序,该测试点将被判定为不通过。
若两对答案中存在一对与交互库得到的值相同,则通过了该测试数据,否则不通过,且交互库会立刻终止交互并强制退出程序。
若你通过了一个测试点中的所有测试数据,该测试点将被判定为通过。
1
5 1
3
1
? 1
? 2
! 3 2 1 1
提示
样例 #1 解释
交互库获得的数据为 。
第一次交互,你的程序通过 询问 的值,显然 ,因此交互库向你的程序输入 。
第二次交互,你的程序通过 询问 的值,。因此交互库向你的程序输入 。
由于 ,而我们知道 ,可以解出 。所以你已经用两次询问确定了答案,可以输出 。由于第一对答案正确,第二对答案是多少就无关紧要了,所以 也是可行的输出,但 或 都不是,因为要保证四个数都在 的范围内。
数据范围
本题开启捆绑测试。
对于 的数据,。,保证 是质数。。
交互库不是自适应的,。
| 子任务 | 特殊性质 | 得分 |
|---|---|---|
| 1 | ||
| 2 | 且 | |
| 3 | ||
| 4 | 且 | |
| 5 | 无 |
后记
:::epigraph[——《Nobody Tells》]
过程中指路的灯火
你是其中一盏
:::
京公网安备 11011102002149号