CF1869A.Make It Zero

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

During Zhongkao examination, Reycloer met an interesting problem, but he cannot come up with a solution immediately. Time is running out! Please help him.

Initially, you are given an array aa consisting of n2n \ge 2 integers, and you want to change all elements in it to 00 .

In one operation, you select two indices ll and rr ( 1lrn1\le l\le r\le n ) and do the following:

  • Let s=alal+1ars=a_l\oplus a_{l+1}\oplus \ldots \oplus a_r , where \oplus denotes the bitwise XOR operation;
  • Then, for all lirl\le i\le r , replace aia_i with ss .

You can use the operation above in any order at most 88 times in total.

Find a sequence of operations, such that after performing the operations in order, all elements in aa are equal to 00 . It can be proven that the solution always exists.

输入格式

The first line of input contains a single integer tt ( 1t5001\le t\le 500 ) — the number of test cases. The description of test cases follows.

The first line of each test case contains a single integer nn ( 2n1002\le n\le 100 ) — the length of the array aa .

The second line of each test case contains nn integers a1,a2,,ana_1,a_2,\ldots,a_n ( 0ai1000\le a_i\le 100 ) — the elements of the array aa .

输出格式

For each test case, in the first line output a single integer kk ( 0k80\le k\le 8 ) — the number of operations you use.

Then print kk lines, in the ii -th line output two integers lil_i and rir_i ( 1lirin1\le l_i\le r_i\le n ) representing that you select lil_i and rir_i in the ii -th operation.

Note that you do not have to minimize kk . If there are multiple solutions, you may output any of them.

输入输出样例

  • 输入#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
    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

说明/提示

In the first test case, since 1230=01\oplus2\oplus3\oplus0=0 , after performing the operation on segment [1,4][1,4] , all the elements in the array are equal to 00 .

In the second test case, after the first operation, the array becomes equal to [3,1,4,15,15,15,15,6][3,1,4,15,15,15,15,6] , after the second operation, the array becomes equal to [0,0,0,0,0,0,0,0][0,0,0,0,0,0,0,0] .

In the third test case:

Operation aa before aa after 11 [1,5,4,1,4,7][\underline{1,5},4,1,4,7] \rightarrow [4,4,4,1,4,7][4,4,4,1,4,7] 22 [4,4,4,1,4,7][4,4,\underline{4,1},4,7] \rightarrow [4,4,5,5,4,7][4,4,5,5,4,7] 33 [4,4,5,5,4,7][4,4,5,5,\underline{4,7}] \rightarrow [4,4,5,5,3,3][4,4,5,5,3,3] 44 [4,4,5,5,3,3][\underline{4,4,5},5,3,3] \rightarrow [5,5,5,5,3,3][5,5,5,5,3,3] 55 [5,5,5,5,3,3][5,5,5,\underline{5,3,3}] \rightarrow [5,5,5,5,5,5][5,5,5,5,5,5] 66 [5,5,5,5,5,5][\underline{5,5,5,5,5,5}] \rightarrow [0,0,0,0,0,0][0,0,0,0,0,0] In the fourth test case, the initial array contains only 00 , so we do not need to perform any operations with it.

首页