1 3 1 2 3
0 In the sample,$S = \{1, 2, 3\}$, subsets of $S$ are: $\varnothing$, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}
因为偶数个相同的数异或得0,奇数个相同的数异或得自身。
发现一个规律,每个元素在所有子集中出现的次数都一样,而且都是2^(n-1),比如样例
是C(1, 1) + C(2, 1) + C(2, 2) = 2 ^ (3 - 1)
当n = 4的时候再推一推发现为C(1, 1) + C(3, 1) + C(3, 2) +C(3, 3) = 2^(4 - 1) = 8
其实就是个杨辉三角的关系
1 2 ^ (1 - 1) = 1
1 1 2^(2 -1) = 2
1 2 1 2^(3 - 1) = 4
1 3 3 1 2 ^ (4 - 1) = 8
.....................
当n为1的时候,也就是只有一个元素的时候输出自身,其他情况所有元素在所有子集中出现的次数都是偶数,最后异或的结果肯定为0
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <queue> #include <stack> using namespace std; long long a[1005]; int main() { int T, n; scanf("%d", &T); while (T--) { scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%I64d", &a[i]); } if (n == 1) { printf("%I64d\n", a[0]); } else { puts("0"); } } return 0; }