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 翻译