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 完成