만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

부분집합 합의 XOR

시간 제한1초메모리 제한512 MB

요약
n개의 정수가 주어질 때, 2^n개 부분집합의 합을 모두 XOR한 값을 구한다.
난이도

보통10점 중 7점

유형
비트 연산, 조합론, 수학
정답자
아직 제출이 없습니다

문제

정수 nn개 A1,A2,…,AnA_1, A_2, \dots, A_n이 주어진다. N={1,2,…,n}N = \{1, 2, \dots, n\}이라고 하자.

NN의 부분집합 II에 대해 SIS_I를 다음과 같이 정의한다.

SI=∑k∈IAkS_I = \sum_{k \in I} A_k

즉 II에 속한 첨자 kk의 AkA_k를 모두 더한 값이다. 공집합의 합은 0이고, NN 자신도 부분집합으로 센다. 그러므로 SIS_I는 모두 2n2^n개다.

이 2n2^n개의 값을 전부 비트 단위 배타적 논리합(XOR)한 결과를 XX라고 하자.

X=⨁I⊆NSIX = \bigoplus_{I \subseteq N} S_I

XX를 구하라.

입력

첫째 줄에 nn이 주어진다. (1≤n≤301 \le n \le 30)

둘째 줄에 nn개의 정수 A1,A2,…,AnA_1, A_2, \dots, A_n이 공백으로 구분되어 주어진다. (0≤Ai<2300 \le A_i < 2^{30})

출력

첫째 줄에 XX를 출력한다.

예제2

  1. 예제 1

    입력
    4
    1 2 3 4
    
    예상 출력
    8
    
  2. 예제 2

    입력
    6
    10 59 21 7 52 44
    
    예상 출력
    160