CF1869A.Make It Zero
入门
通过率:0%
时间限制:1.00s
内存限制:256MB
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 a consisting of n≥2 integers, and you want to change all elements in it to 0.
In one operation, you select two indices l and r (1≤l≤r≤n) and do the following:
- Let s=al⊕al+1⊕…⊕ar, where ⊕ denotes the bitwise XOR operation;
- Then, for all l≤i≤r, replace ai with s.
You can use the operation above in any order at most 8 times in total.
Find a sequence of operations, such that after performing the operations in order, all elements in a are equal to 0. It can be proven that the solution always exists.
在中考考试中,Reycloer 遇到了一道有趣的题目,但他一时无法想出解法。时间正在飞速流逝!请帮助他。
初始时,你被给定一个由 n≥2 个整数组成的数组 a,你的目标是将其中所有元素都变为 0。
每次操作中,你需要选择两个下标 l 和 r(满足 1≤l≤r≤n),并执行以下步骤:
- 计算 s=al⊕al+1⊕…⊕ar,其中 ⊕ 表示按位异或运算;
- 然后,对所有满足 l≤i≤r 的下标 i,将 ai 替换为 s。
你最多可执行上述操作 8 次(操作顺序可任意安排)。
请找出一组操作序列,使得按该顺序执行完所有操作后,数组 a 中所有元素均为 0。可以证明,这样的解总是存在的。
输入格式
The first line of input contains a single integer t (1≤t≤500) — the number of test cases. The description of test cases follows.
The first line of each test case contains a single integer n (2≤n≤100) — the length of the array a.
The second line of each test case contains n integers a1,a2,…,an (0≤ai≤100) — the elements of the array a.
输入的第一行包含一个整数 t(1≤t≤500),表示测试用例的数量。随后是各测试用例的描述。
每个测试用例的第一行包含一个整数 n(2≤n≤100),表示数组 a 的长度。
每个测试用例的第二行包含 n 个整数 a1,a2,…,an(0≤ai≤100),表示数组 a 的元素。
输出格式
For each test case, in the first line output a single integer k (0≤k≤8) — the number of operations you use.
Then print k lines, in the i-th line output two integers li and ri (1≤li≤ri≤n) representing that you select li and ri in the i-th operation.
Note that you do not have to minimize k. If there are multiple solutions, you may output any of them.
对于每个测试用例,在第一行输出一个整数 k(0≤k≤8)—— 表示你所使用的操作次数。
然后输出 k 行,其中第 i 行输出两个整数 li 和 ri(1≤li≤ri≤n),表示你在第 i 次操作中选择 li 和 ri。
注意:你无需最小化 k。若存在多种解,你可以输出其中任意一种。
输入输出样例
输入#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 1⊕2⊕3⊕0=0, after performing the operation on segment [1,4], all the elements in the array are equal to 0.
In the second test case, after the first operation, the array becomes equal to [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].
In the third test case:
Operation
a before
a after
1
[1,5,4,1,4,7]
→
[4,4,4,1,4,7]
2
[4,4,4,1,4,7]
→
[4,4,5,5,4,7]
3
[4,4,5,5,4,7]
→
[4,4,5,5,3,3]
4
[4,4,5,5,3,3]
→
[5,5,5,5,3,3]
5
[5,5,5,5,3,3]
→
[5,5,5,5,5,5]
6
[5,5,5,5,5,5]
→
[0,0,0,0,0,0]
In the fourth test case, the initial array contains only 0, so we do not need to perform any operations with it.
在第一个测试用例中,由于 1⊕2⊕3⊕0=0,对区间 [1,4] 执行操作后,数组中的所有元素均变为 0。
在第二个测试用例中,第一次操作后,数组变为 [3,1,4,15,15,15,15,6];第二次操作后,数组变为 [0,0,0,0,0,0,0,0]。
在第三个测试用例中:
操作
操作前的 a
操作后的 a
1
[1,5,4,1,4,7]
→
[4,4,4,1,4,7]
2
[4,4,4,1,4,7]
→
[4,4,5,5,4,7]
3
[4,4,5,5,4,7]
→
[4,4,5,5,3,3]
4
[4,4,5,5,3,3]
→
[5,5,5,5,3,3]
5
[5,5,5,5,3,3]
→
[5,5,5,5,5,5]
6
[5,5,5,5,5,5]
→
[0,0,0,0,0,0]
在第四个测试用例中,初始数组仅包含 0,因此无需对其执行任何操作。
输入解题思路,AI测评打分。不知道怎么写?