CF2222E Seek the Truth
题目描述
[Nanatsukaze - Connect the World](https://www.youtube.com/watch?v=M-IayQIR0XA)
这是一个交互题。
有两个隐藏的整数 $k$ 和 $c$,其中 $k\in \{1,2,3\}$,$1\le c\le 2^n-1$。注意 $c\ne 0$。
在任何交互之前,你需要向评测器给出一个不超过 $2^n-1$ 的非负整数 $a$。评测器会用 $a$ 作为集合 $S$ 的初始元素,也就是说,初始时 $S=\{a\}$。
接下来,你最多可以进行 $n+3$ 次如下两种类型的查询:
1. 选择一个整数 $x$,$0\leq x\le 2^n-1$。评测器会将 $f(x)$ 插入 $S$ 然后返回 $|S|$(即 $S$ 插入该元素后的大小);
2. 选择一个整数 $y$,$0\leq y\le 2^n-1$。评测器会返回满足 $z\in S$ 且 $z\geq y$ 的整数 $z$ 的个数。
其中,$f(x)$ 的定义如下:
$$
f(x)=
\begin{cases}
x\,\&\,c & \text{若 } k=1,\\
x\,|\,c & \text{若 } k=2,\\
x\oplus c & \text{若 } k=3。\\
\end{cases}
$$
这里 $\&$ 表示按位与运算,[bitwise AND operation](https://en.wikipedia.org/wiki/Bitwise_operation#AND);$|$ 表示按位或运算,[bitwise OR operation](https://en.wikipedia.org/wiki/Bitwise_operation#OR);$\oplus$ 表示按位异或运算,[bitwise XOR operation](https://en.wikipedia.org/wiki/Bitwise_operation#XOR)。
你的任务是在最多 $n+3$ 次交互内确定 $k$ 和 $c$ 的值。
请注意,报告答案不计入 $n+3$ 次交互中。
输入格式
每个测试点包含多组测试数据。第一行包含一个整数 $t$($1\le t\le 10^4$),表示测试数据组数。每组数据描述如下。
每组数据的第一行包含一个整数 $n$($2\leq n\leq 60$)。之后进入交互过程。
保证所有测试数据中 $n$ 的总和不超过 $10^5$。
输出格式
(交互题,格式见题面)
说明/提示
以下为样例交互过程:
```
Solution Jury Explanation
---------- ---------- ------------
3 3 总共 3 组测试数据
2 2 $n=2$。隐藏参数为 $k=1, c=3$
3 初始时 $S=\{3\}$
I 3 1 插入 $f(3)=3\,\&\,3=3$。$S=\{3\}$,返回 $|S|=1$
A 1 3 作答:$k=1, c=3$
2 2 $n=2$。隐藏参数为 $k=2, c=2$
1 初始时 $S=\{1\}$
I 0 2 插入 $f(0)=0\,|\,2=2$。$S=\{1,2\}$,返回 $|S|=2$
Q 2 1 $z$ 为 $2$ 时满足 $z\in S$ 且 $z\geq 2$,返回 $1$
Q 1 2 $z$ 为 $1$ 或 $2$ 满足条件,返回 $2$
Q 0 2 $z=1,2$ 满足条件,返回 $2$
I 3 3 插入 $f(3)=3\,|\,2=3$。$S=\{1,2,3\}$,返回 $|S|=3$
A 2 2 作答:$k=2, c=2$
2 2 $n=2$。隐藏参数为 $k=3, c=1$
1 初始时 $S=\{1\}$
I 1 2 插入 $f(1)=1\oplus 1=0$。$S=\{0,1\}$,返回 $2$
I 0 2 插入 $f(1)=0\oplus 1=1$。$S=\{0,1\}$,返回 $2$
A 3 1 作答:$k=3, c=1$
```
样例输入输出中的空行只是为了观感更好,实际提交时不必输出。
注意本题样例中的交互方式并不能唯一确定参数,仅用来说明交互格式。
由 ChatGPT 5 翻译