#P13110. [GCJ 2019 #1B] Draupnir
[GCJ 2019 #1B] Draupnir
Description
奥丁拥有一些能够自我复制的魔法戒指。每个“X 天戒指”会在其诞生后的每隔 天生产一个同样的 X 天戒指。这些戒指共有六种类型:1 天、2 天、……,一直到 6 天。
例如,一个在第 0 天诞生的 3 天戒指,在第 3 天才会产生另一个 3 天戒指。然后在第 6 天,这两个戒指都会各自再产生一个 3 天戒指,以此类推。
你知道奥丁在第 0 天之前没有任何戒指。在第 0 天,有一些戒指诞生了。在第 0 天结束时,奥丁拥有 个 天戒指,其中 。你知道 ,且至少有一个 是正数。
幸运的是,你还可以使用知识之井。每次使用时,你可以得知奥丁在某一天(第 1 天到第 500 天之间,包含端点)结束时拥有的戒指总数。由于知识之井的信息容量有限,答案会对 取模。此外,每个测试用例你最多只能使用知识之井 次。
你的目标是确定奥丁在第 0 天结束时每种类型的戒指数量——也就是找出每个 的值。
交互协议
这是一个交互题。
最开始,你的程序应读取一行,包含两个整数 (测试用例数量)和 (每个测试用例允许使用知识之井的次数)。然后,你需要处理 个测试用例。
在每个测试用例中,你的程序最多可以与评测机进行 次交互。你可以进行最多 次如下形式的交互:
- 你的程序输出一行,包含一个整数 ,表示询问第 天()。
- 评测机回复一行,包含一个整数:奥丁在第 天结束时拥有的戒指总数,对 取模。如果你发送了无效数据(如超出范围的数字或格式错误),评测机会回复 。
在上述 0 到 次交互后,你必须再进行一次如下形式的交互:
- 你的程序输出一行,包含六个整数 $\mathbf{R}_1, \mathbf{R}_2, \mathbf{R}_3, \mathbf{R}_4, \mathbf{R}_5, \mathbf{R}_6$,分别表示奥丁在第 0 天结束时拥有的 1 天至 6 天戒指数量。
- 评测机回复一行,包含一个整数:如果你的答案正确,则为 ,否则为 (或格式错误)。
当评测机向你的输入流发送 (无效数据或答案错误时),它不会再发送其他输出。如果你的程序在收到 后仍然等待评测机回复,将会超时(TLE)。请确保你的程序在收到 后及时退出,以获得 Wrong Answer 判定而不是 Time Limit Exceeded。如果超出内存限制或运行时错误,将获得相应的判定。
Input Format
见交互协议。
Output Format
见交互协议。
Hint
交互样例
该交互对应于测试集 1。假设我们不知道,评测机设定奥丁在第 0 天拥有每种类型各一个戒指。
t, w = readline_int_list() // 读取 t=50, w=6
printline 3 to stdout // 询问第 3 天
flush stdout
n = readline_int() // 读取 n=15
printline 1 to stdout // 询问第 1 天
flush stdout
n = readline_int() // 读取 n=7
printline 1 1 1 3 0 0 to stdout
flush stdout // 我们做出猜测,尽管还可以再询问四次
verdict = readline_int() // 读取 verdict=-1(评测机判定答案错误)
exit // 及时退出,避免超时
注意,即使我们的猜测与评测机返回的信息一致,但如果答案不正确,依然会被判错。
你可以使用测试工具在本地或平台上测试。若在本地测试,需要并行运行测试工具和你的代码;你可以使用我们的 interactive runner。更多信息请阅读该文件中的注释。
测试工具的使用说明已包含在工具的注释中。建议你添加自己的测试用例。请注意,虽然测试工具旨在模拟评测系统,但它不是真实的评测系统,行为可能有所不同。
数据范围
- 。
测试集 1(10 分,可见)
- 。
测试集 2(21 分,隐藏)
- 。
由 ChatGPT 4.1 翻译
京公网安备 11011102002149号