[XJTUPC2024] 循环移位
题目描述
给定长度为 $2^n$ 的数组 $a_i$ ($0 \leq i < 2^n$),你可以进行任意次循环移位。
求 $\sum_{i=0}^{2^n-1} a_i \oplus i$, $\sum_{i=0}^{2^n-1} a_i \& i$,$\sum_{i=0}^{2^n-1} a_i | i$ 的最大值。其中 $\oplus, \&, |$ 分别代表按位异或,按位与,按位或。
对于一个长度为 $m$ 的数组 $x_i$ ($0 \leq i < m$),其进行循环移位的结果 $x'_i$ 为:
$$x'_i = \left\{
\begin{array}{ll}
x_{i - 1} & i \neq 0 \\
x_{m - 1} & i = 0
\end{array}\right.$$
输入输出格式
输入格式
输入第一行包含一个整数 $n$ ($1 \leq n \leq 20$),含义如题意所述。
接下来一行包含 $2^n$ 个整数 $a_i$ ($0 \leq a_i < 2^n$),为给定的数组。
输出格式
输出一行三个整数,由空格隔开,为 $\sum_{i=0}^{2^n-1} a_i \oplus i$,$\sum_{i=0}^{2^n-1} a_i \& i$,$\sum_{i=0}^{2^n-1} a_i | i$ 的最大值。
输入输出样例
输入样例 #1
2
1 3 2 2
输出样例 #1
8 5 11
输入样例 #2
4
1 1 4 5 1 4 1 9 1 9 8 1 0 0 0 0
输出样例 #2
149 41 157