#P15496. [ICPC 2025 APC] Minus Operator
[ICPC 2025 APC] Minus Operator
题目描述
对于二进制值 和 ,减号运算符定义如下:若 且 ,则 ;否则 。此外,表达式的语法定义如下。其中,、括号和减号是终结符, 是起始符号。
$$\begin{aligned} E &::=\mathbf{x} \mid (E - E) \end{aligned}$$评测程序持有一个符合 语法的表达式。这个表达式对你来说是隐藏的。开始时,你只知道表达式中终结符 的个数,记为 。
你的任务是通过有限次查询来猜出这个表达式。
每次查询,你需要指定一个长度为 的二进制串 。然后评测程序会将从左到右第 个终结符 临时替换为 (),并根据减号运算符的定义计算替换后的表达式。之后,评测程序将计算结果( 或 )返回给你。
输入格式
输入的第一行包含一个整数 ()。读取该整数后,你的程序即可开始进行查询。对于每次查询,你的程序应输出一行,格式为 query S,其中 是一个长度为 的二进制串,每个字符必须是 或 。作为响应,输入中将有一行包含计算得到的值。
你的程序最多可以进行 次查询。如果查询次数超过 ,你将得到“答案错误”的评判结果。
当你的程序确定了评测程序所持有的表达式时,应输出一行,格式为 answer T,其中 就是该表达式。之后,交互过程结束,你的程序应当终止。
在上述约束下,可以证明表达式可以被唯一确定。
关于交互式评测的说明:
- 评测是非对抗性的,即表达式是预先选定的,而不是根据你的查询动态调整的。
- 输出后不要忘记刷新输出缓冲区。详情请参见“评测细节”文档。
- 我们提供了一个用于本地测试的命令行工具,以及对应于示例交互的输入文件。你可以从 DOMjudge 下载这些文件。该工具顶部有注释说明其用法。
3
0
query 111
answer ((x-x)-x)
4
0
1
query 0000
query 1001
answer ((x-x)-(x-x))
提示
示例交互 #1 的解释
当 时,只有两种可能的表达式: 或 。对于查询 ,这两种表达式的计算结果分别为:
- ,以及
- 。
在此示例中,评测程序返回 ,表明第一个表达式是正确的。
翻译由 DeepSeek 完成