CF1270C.Make Good

普及/提高-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

Let's call an array a1,a2,…,ama_1, a_2, \dots, a_m of nonnegative integer numbers good if a1+a2+⋯+am=2⋅(a1⊕a2⊕⋯⊕am)a_1 + a_2 + \dots + a_m = 2\cdot(a_1 \oplus a_2 \oplus \dots \oplus a_m), where ⊕\oplus denotes the bitwise XOR operation.

For example, array [1,2,3,6][1, 2, 3, 6] is good, as 1+2+3+6=12=2⋅6=2⋅(1⊕2⊕3⊕6)1 + 2 + 3 + 6 = 12 = 2\cdot 6 = 2\cdot (1\oplus 2 \oplus 3 \oplus 6). At the same time, array [1,2,1,3][1, 2, 1, 3] isn't good, as 1+2+1+3=7≠2⋅1=2⋅(1⊕2⊕1⊕3)1 + 2 + 1 + 3 = 7 \neq 2\cdot 1 = 2\cdot(1\oplus 2 \oplus 1 \oplus 3).

You are given an array of length nn: a1,a2,…,ana_1, a_2, \dots, a_n. Append at most 33 elements to it to make it good. Appended elements don't have to be different. It can be shown that the solution always exists under the given constraints. If there are different solutions, you are allowed to output any of them. Note that you don't have to minimize the number of added elements!. So, if an array is good already you are allowed to not append elements.

我们称一个由非负整数组成的数组 a1,a2,…,ama_1, a_2, \dots, a_m 是“好的”,如果满足

a1+a2+⋯+am=2⋅(a1⊕a2⊕⋯⊕am),a_1 + a_2 + \dots + a_m = 2\cdot(a_1 \oplus a_2 \oplus \dots \oplus a_m),

其中 ⊕\oplus 表示按位异或运算。

例如,数组 [1,2,3,6][1, 2, 3, 6] 是好的,因为

1+2+3+6=12=2⋅6=2⋅(1⊕2⊕3⊕6).1 + 2 + 3 + 6 = 12 = 2\cdot 6 = 2\cdot (1\oplus 2 \oplus 3 \oplus 6).

而数组 [1,2,1,3][1, 2, 1, 3] 不是好的,因为

1+2+1+3=7≠2⋅1=2⋅(1⊕2⊕1⊕3).1 + 2 + 1 + 3 = 7 \neq 2\cdot 1 = 2\cdot(1\oplus 2 \oplus 1 \oplus 3).

你被给定一个长度为 nn 的数组:a1,a2,…,ana_1, a_2, \dots, a_n。请在其末尾最多添加 3 个元素,使其变为“好的”。添加的元素可以相同。在题目给定的约束下,可以证明解一定存在。若存在多种解,输出任意一种即可。注意:你无需最小化所添加元素的个数! 因此,若原数组已经是“好的”,你可以选择不添加任何元素。

输入格式

Each test contains multiple test cases. The first line contains the number of test cases tt (1≤t≤10 0001 \le t \le 10\,000). The description of the test cases follows.

The first line of each test case contains a single integer nn (1≤n≤105)(1\le n \le 10^5) — the size of the array.

The second line of each test case contains nn integers a1,a2,…,ana_1, a_2, \dots, a_n (0≤ai≤1090\le a_i \le 10^9) — the elements of the array.

It is guaranteed that the sum of nn over all test cases does not exceed 10510^5.

每个测试包含多个测试用例。第一行包含测试用例的数量 tt(1≤t≤10 0001 \le t \le 10\,000)。随后是各测试用例的描述。

每个测试用例的第一行包含一个整数 nn(1≤n≤1051\le n \le 10^5)—— 数组的大小。

每个测试用例的第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n(0≤ai≤1090\le a_i \le 10^9)—— 数组的元素。

保证所有测试用例的 nn 之和不超过 10510^5。

输出格式

For each test case, output two lines.

In the first line, output a single integer ss (0≤s≤30\le s\le 3) — the number of elements you want to append.

In the second line, output ss integers b1,…,bsb_1, \dots, b_s (0≤bi≤10180\le b_i \le 10^{18}) — the elements you want to append to the array.

If there are different solutions, you are allowed to output any of them.

对于每个测试用例,输出两行。

第一行输出一个整数 ss(0≤s≤30\le s\le 3)—— 表示你想追加的元素个数。

第二行输出 ss 个整数 b1,…,bsb_1, \dots, b_s(0≤bi≤10180\le b_i \le 10^{18})—— 表示你想追加到数组中的元素。

若存在多种解,你可以输出其中任意一种。

输入输出样例

  • 输入#1

    3
    4
    1 2 3 6
    1
    8
    2
    1 1

    输出#1

    0
    
    2
    4 4
    3
    2 6 2

说明/提示

In the first test case of the example, the sum of all numbers is 1212, and their ⊕\oplus is 66, so the condition is already satisfied.

In the second test case of the example, after adding 4,44, 4, the array becomes [8,4,4][8, 4, 4]. The sum of numbers in it is 1616, ⊕\oplus of numbers in it is 88.

在示例的第一个测试用例中,所有数字的和为 1212,它们的异或(⊕\oplus)为 66,因此条件已满足。

在示例的第二个测试用例中,添加 4,44, 4 后,数组变为 [8,4,4][8, 4, 4]。其中数字的和为 1616,数字的异或(⊕\oplus)为 88。

输入解题思路,AI测评打分。不知道怎么写?

首页