CF2246E lce4113 and Security Game
题目描述
本题为交互题。此外,本题不支持 Hack。
有两个隐藏整数 $b$ 和 $v$,其中 $b \in \{0,1\}$,并且 $0 \le v < 2^{30}$。还有一个隐藏操作 $\mathrm{ty}$,取值为 $\&$ 或 $|$。其中,$\&$ 表示按位与操作(详见 [bitwise AND operation](https://en.wikipedia.org/wiki/Bitwise_operation#AND)),$|$ 表示按位或操作(详见 [bitwise OR operation](https://en.wikipedia.org/wiki/Bitwise_operation#OR))。
您的目标是猜出 $b$。
交互流程如下:
- 首先,你向交互器发送一个值 $x$,其中 $0 \le x < 2^{30}$。
- 交互器返回 $v\,\mathrm{ty}\,x$。即形式上会返回 $o(v,x)$,其中
$$
o(v,x) = \begin{cases} v\,\&\,x & \mathrm{ty} = \& \\ v\,|\,x & \mathrm{ty} = |. \end{cases}
$$
- 然后,你发送两个数 $m_0$ 和 $m_1$,要求 $0 \le m_0, m_1 < 2^{30}$。
- 最后,交互器将返回 $m_b \oplus v$,其中 $\oplus$ 表示按位异或操作(详见 [bitwise XOR operation](https://en.wikipedia.org/wiki/Bitwise_operation#XOR))。
交互结束后,你需要输出 $b$。
输入格式
每组测试包含多组数据。第一行为测试组数 $t$($1 \le t \le 10^5$)。随后的内容为每组测试的交互,由你和交互器按照交互流程进行,每组测试时你将逐步得到相关信息。
输出格式
(无初始输出。每组交互结束后,你需要输出一个数字 $b$,判断隐藏位 $b$ 的值。)
说明/提示
样例交互流程如下:
| Solution | Interactor | Explanation |
|--------------|-------------------|----------------------------------------------------------------|
| $3$ | | 有 $3$ 组测试数据。 |
| $2$ | | 选取 $x = 2$。 |
| | $0$ | 交互器返回 $x\,\mathrm{ty}\,v = 2\,\&\,1 = 0$。 |
| $314$ $159$ | | 发送 $m_0 = 314,\ m_1 = 159$。 |
| | $315$ | 返回 $m_b \oplus v = m_0 \oplus v = 315$。 |
| $0$ | | 输出 $b = 0$。 |
| $3$ | | 选取 $x = 3$。 |
| | $3$ | 交互器返回 $x\,\mathrm{ty}\,v = 3\,|\,1 = 3$。 |
| $12$ $34$ | | 发送 $m_0 = 12,\ m_1 = 34$。 |
| | $35$ | 返回 $m_b \oplus v = m_1 \oplus v = 35$。 |
| $1$ | | 输出 $b = 1$。 |
| $0$ | | 最后一组数据,$x = 0$。 |
| | $5$ | 交互器返回 $x\,\mathrm{ty}\,v = 0\,|\,5 = 5$。 |
| $0$ $0$ | | 发送 $m_0 = 0,\ m_1 = 0$。 |
| | $5$ | 返回 $m_b \oplus v = m_1 \oplus v = 5$。 |
| $1$ | | 输出 $b = 1$。 |
请注意,样例方案的查询不能保证一定能判断出隐藏位 $b$ 的值。样例中的空行仅为可读性,不要求在代码输出时补充。
各测试数据的隐藏值如下表:
| 测试编号 | $v$ | $b$ | $\mathrm{ty}$ |
|----------|-----|-----|--------------|
| 1 | $1$ | $0$ | $\&$ |
| 2 | $1$ | $1$ | $|$ |
| 3 | $5$ | $1$ | $|$ |
由 ChatGPT 5 翻译