CF1869A Make It Zero
题目描述
在中考考试期间,Reycloer 遇到了一个有趣的问题,但他一时想不出解决办法。时间紧迫!请你帮助他。
一开始,你有一个由 $n \ge 2$ 个整数构成的数组 $a$,你需要将其中所有元素都变为 $0$。
每次操作,你可以选择两个下标 $l$ 和 $r$($1 \le l \le r \le n$),并进行如下操作:
- 令 $s = a_l \oplus a_{l+1} \oplus \ldots \oplus a_r$,其中 $\oplus$ 表示[按位异或运算](https://en.wikipedia.org/wiki/Bitwise_operation#XOR);
- 然后,对于所有 $l \le i \le r$,将 $a_i$ 替换为 $s$。
你最多可以以任意顺序进行上述操作 $8$ 次。
请你给出一组操作序列,使得按顺序执行这些操作后,数组 $a$ 的所有元素都变为 $0$。可以保证一定存在解。
输入格式
输入的第一行包含一个整数 $t$($1 \le t \le 500$),表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 $n$($2 \le n \le 100$),表示数组 $a$ 的长度。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($0 \le a_i \le 100$),表示数组 $a$ 的元素。
输出格式
对于每个测试用例,第一行输出一个整数 $k$($0 \le k \le 8$),表示你使用的操作次数。
接下来输出 $k$ 行,每行输出两个整数 $l_i$ 和 $r_i$($1 \le l_i \le r_i \le n$),表示你在第 $i$ 次操作中选择的区间 $[l_i, r_i]$。
注意,你不需要使 $k$ 最小。如果有多组解,你可以输出任意一组。
说明/提示
在第一个测试用例中,因为 $1 \oplus 2 \oplus 3 \oplus 0 = 0$,所以对区间 $[1,4]$ 执行一次操作后,数组所有元素都变为 $0$。
在第二个测试用例中,第一次操作后,数组变为 $[3,1,4,15,15,15,15,6]$,第二次操作后,数组变为 $[0,0,0,0,0,0,0,0]$。
在第三个测试用例中:
\[
\begin{aligned}
\text{操作} &\quad a \text{ 操作前} &\quad a \text{ 操作后} \\
1 &\quad [\underline{1,5},4,1,4,7] &\rightarrow [4,4,4,1,4,7] \\
2 &\quad [4,4,\underline{4,1},4,7] &\rightarrow [4,4,5,5,4,7] \\
3 &\quad [4,4,5,5,\underline{4,7}] &\rightarrow [4,4,5,5,3,3] \\
4 &\quad [\underline{4,4,5},5,3,3] &\rightarrow [5,5,5,5,3,3] \\
5 &\quad [5,5,5,\underline{5,3,3}] &\rightarrow [5,5,5,5,5,5] \\
6 &\quad [\underline{5,5,5,5,5,5}] &\rightarrow [0,0,0,0,0,0] \\
\end{aligned}
\]
在第四个测试用例中,初始数组全为 $0$,因此无需进行任何操作。
由 ChatGPT 4.1 翻译