Решение задачи Сделай хорошим с Codeforces

Без пояснения   Просмотров: 55


Будем называть массив a1,a2,…,am неотрицательных целых чисел хорошим, если a1+a2+⋯+am=2⋅(a1⊕a2⊕⋯⊕am), где ⊕ обозначает операцию побитового исключающего ИЛИ.

К примеру, массив [1,2,3,6] является хорошим, так как 1+2+3+6=12=2⋅6=2⋅(1⊕2⊕3⊕6). В то же время, массив [1,2,1,3] хорошим не является, так как 1+2+1+3=7≠2⋅1=2⋅(1⊕2⊕1⊕3).

Вам дан массив длины n: a1,a2,…,an. Добавьте к нему не более 3 элементов, чтобы он стал хорошим. Добавленные элементы не обязаны быть различными. Можно показать, что при данных ограничениях решение всегда существует. Если существует несколько возможных решений, выведите любое из них. Обратите внимание, что минимизировать количество добавленных элементов не требуется!. В частности если массив изначально уже хороший, то вы можете не добавлять элементов.


Код

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int t=1;
	cin>>t;
	while(t--)
	{
		int n;
		cin>>n;
		long long sum = 0,x = 0;
		int k;
		for(int i = 0;i < n; i++){
			cin >> k;
			sum += k;
			x ^= k;
		}
		cout<< "2\n" << x << " " << sum + x << "\n";
	
	}
}

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться