CF2077B Finding OR Sum

题目描述

[ALTER EGO - Yuta Imai vs Qlarabelle](https://www.youtube.com/watch?v=LJEqM7pvClA) 这是一道交互题。 存在两个隐藏的非负整数 $x$ 和 $y$($0 \leq x, y < 2^{30}$)。你最多可以提出 2 次以下形式的询问: - 选择一个非负整数 $n$($0 \leq n < 2^{30}$)。评测系统将返回 $(n \mathbin{|} x) + (n \mathbin{|} y)$ 的值,其中 $|$ 表示[按位或运算](https://en.wikipedia.org/wiki/Bitwise_operation#OR)。 此后,评测系统将给出另一个非负整数 $m$($0 \leq m < 2^{30}$)。你必须正确回答 $(m \mathbin{|} x) + (m \mathbin{|} y)$ 的值。

输入格式

每个测试包含多个测试用例。第一行输入测试用例数量 $t$($1 \le t \le 10^4$)。接下来描述每个测试用例。

输出格式

已选择两个隐藏整数 $x$ 和 $y$($0 \leq x, y < 2^{30}$)。注意 $x$ 和 $y$ 可能因不同测试用例而异。 本题的交互器是非自适应的。换句话说,整数 $x$ 和 $y$ 在交互过程中不会改变。 要提出询问,请选择一个整数 $n$($0 \leq n < 2^{30}$)并在一行中仅输出该整数 $n$。 你将收到一个整数,即 $(n \mathbin{|} x) + (n \mathbin{|} y)$ 的值。 你最多只能提出 2 次此类询问。 完成询问后,在一行中输出 "!"。你将收到一个整数 $m$($0 \leq m < 2^{30}$)。注意 $m$ 的值在交互开始前也已确定。 你必须在一行中仅输出 $(m \mathbin{|} x) + (m \mathbin{|} y)$ 的值。注意此行不被视为询问,不计入询问次数统计。 完成此操作后,继续处理下一个测试用例。 如果在交互过程中提出超过 2 次询问,你的程序必须立即终止,并得到 Wrong Answer 的判定结果。否则,由于你的解决方案将继续从已关闭的流中读取数据,可能会得到任意判定结果。 在输出询问后请勿忘记换行并刷新输出缓冲区。否则你将得到 Idleness limit exceeded。为此,请使用: - C++ 中的 fflush(stdout) 或 cout.flush(); - Java 中的 System.out.flush(); - Pascal 中的 flush(output); - Python 中的 stdout.flush(); - 其他语言请参考相关文档。

说明/提示

### 示例交互 在第一个测试中,交互过程如下: | 解决方案输出 | 评测系统输出 | 说明 | |--------------|--------------|------| | `2` | | 共有 2 个测试用例 | | | | 第一个测试用例中 $x=1$ 且 $y=2$ | | `0` | | 解决方案询问 $(0 \mathbin{\|} 1) + (0 \mathbin{\|} 2)$ | | | `3` | 评测系统返回 3 | | `1` | | 解决方案询问 $(1 \mathbin{\|} 1) + (1 \mathbin{\|} 2)$ | | | `4` | 评测系统返回 4 | | `!` | | 解决方案请求 $m$ 的值 | | | `1` | 评测系统返回 $m=1$ | | `4` | | 解决方案根据先前询问得知 $(1 \mathbin{\|} x) + (1 \mathbin{\|} y)=4$ | | | | 第二个测试用例中 $x=0$ 且 $y=0$ | | `0` | | 解决方案询问 $(0 \mathbin{\|} 0) + (0 \mathbin{\|} 0)$ | | | `0` | 评测系统返回 0 | | `!` | | 解决方案请求 $m$ 的值 | | | `1` | 评测系统返回 $m=1$ | | `2` | | 解决方案推断出 $x=y=0$,因此返回 $(1 \mathbin{\|} 0) + (1 \mathbin{\|} 0)=2$ | 注意示例输入输出中的空行仅为清晰展示,实际交互中不会出现。 注意示例输入输出中的空行仅为清晰展示,实际交互中不会出现。 ## Hacks 要发起 hack,请遵循以下测试格式: 第一行包含测试用例数量 $t$($1 \le t \le 10^4$)。接下来描述每个测试用例。 每个测试用例的第一行且唯一一行包含三个整数 $x, y, m$($0 \leq x, y, m < 2^{30}$)。 翻译由 DeepSeek R1 完成