logo AlgoBeat OnlineJudge
登录 注册

#215527. Nobody Tells (Original Version)

内存限制:512 MiB 时间限制:4000 ms 标准输入输出
题目类型:VJudge(洛谷) 评测方式:VJudge
上传者: 匿名

题目描述


请注意本题与 P15425 Nobody Tells 的不同之处——本题对询问的约束更严格。


这是一道交互题。

Coola 有两个数 ,还有一个质数 ,我们用如下方法生成一个序列

交互库会给定你 和一个参数 ,你最多可以向交互库查询 次:

  • 给出一个 ,交互库告诉你 的值。

你的任务是,在最多 次查询之后猜出 的值。特别地,你可以同时猜测两对 ,详见交互细节。

交互细节

本题包含多组测试。

在输入数据的第一行,交互库会给你的程序一个数 ,表示该测试点的测试数据组数。

对于每组测试数据:

交互库会获得该测试数据的 。这同时也说明交互库是非自适应性的

第一行,交互库向你的程序输入两个数 ,表示模数与询问限制。

对于每次询问,你需要输出 ? i,表示查询 的值。

正常情况下,交互库会向你输入一个 中的整数,表示你查询的

若发生以下情况,交互库会立刻终止交互并强制退出程序,该测试点将被判定为不通过:

  • 询问次数超过
  • 不在 的范围中。

在你猜出可能的 后,你需要输出 ! p1 q1 p2 q2,表示你猜测的两对 分别为 。此操作不计入询问的 次操作中。特别地,你需要保证四个数都在 的范围中,否则交互库会立刻终止交互并强制退出程序,该测试点将被判定为不通过。

若两对答案中存在一对与交互库得到的值相同,则通过了该测试数据,否则不通过,且交互库会立刻终止交互并强制退出程序。

若你通过了一个测试点中的所有测试数据,该测试点将被判定为通过。

样例

样例输入 1

1
5 1

3

1

样例输出 1



? 1

? 2

! 3 2 1 1

数据范围与提示

样例 #1 解释

交互库获得的数据为

第一次交互,你的程序通过 询问 的值,显然 ,因此交互库向你的程序输入

第二次交互,你的程序通过 询问 的值,。因此交互库向你的程序输入

由于 ,而我们知道 ,可以解出 。所以你已经用两次询问确定了答案,可以输出 。由于第一对答案正确,第二对答案是多少就无关紧要了,所以 也是可行的输出,但 都不是,因为要保证四个数都在 的范围内。

数据范围

本题开启捆绑测试。

对于 的数据,,保证 质数

交互库不是自适应的

子任务 特殊性质 得分
1
2
3
4
5

后记

:::epigraph[——《Nobody Tells》] 过程中指路的灯火
你是其中一盏 :::