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