CF1869A.Make It Zero

传统题 时间 2000 ms 内存 256 MiB 4 尝试 1 已通过 1 标签

Make It Zero

题目描述

在中考考试期间,Reycloer 遇到了一个有趣的问题,但他一时想不出解决办法。时间紧迫!请你帮助他。

一开始,你有一个由 n2n \ge 2 个整数构成的数组 aa,你需要将其中所有元素都变为 00

每次操作,你可以选择两个下标 llrr1lrn1 \le l \le r \le n),并进行如下操作:

  • s=alal+1ars = a_l \oplus a_{l+1} \oplus \ldots \oplus a_r,其中 \oplus 表示按位异或运算
  • 然后,对于所有 lirl \le i \le r,将 aia_i 替换为 ss

你最多可以以任意顺序进行上述操作 88 次。

请你给出一组操作序列,使得按顺序执行这些操作后,数组 aa 的所有元素都变为 00。可以保证一定存在解。

输入格式

输入的第一行包含一个整数 tt1t5001 \le t \le 500),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn2n1002 \le n \le 100),表示数组 aa 的长度。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n0ai1000 \le a_i \le 100),表示数组 aa 的元素。

输出格式

对于每个测试用例,第一行输出一个整数 kk0k80 \le k \le 8),表示你使用的操作次数。

接下来输出 kk 行,每行输出两个整数 lil_irir_i1lirin1 \le l_i \le r_i \le n),表示你在第 ii 次操作中选择的区间 [li,ri][l_i, r_i]

注意,你不需要使 kk 最小。如果有多组解,你可以输出任意一组。

说明/提示

在第一个测试用例中,因为 1230=01 \oplus 2 \oplus 3 \oplus 0 = 0,所以对区间 [1,4][1,4] 执行一次操作后,数组所有元素都变为 00

在第二个测试用例中,第一次操作后,数组变为 [3,1,4,15,15,15,15,6][3,1,4,15,15,15,15,6],第二次操作后,数组变为 [0,0,0,0,0,0,0,0][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} ]

在第四个测试用例中,初始数组全为 00,因此无需进行任何操作。

由 ChatGPT 4.1 翻译

样例

6
4
1 2 3 0
8
3 1 4 1 5 9 2 6
6
1 5 4 1 4 7
5
0 0 0 0 0
7
1 1 9 9 0 1 8
3
100 100 0
1
1 4
2
4 7
1 8
6
1 2
3 4
5 6
1 3
4 6
1 6
0
4
1 2
6 7
3 4
6 7
1
1 2

在线编程 IDE

建议全屏模式获得最佳体验