我们考虑集合中的每个数x对答案的贡献。 设集合有n个数,则包含x的子集个数有2^(n-1)个。 那么当n > 1时,x出现了偶数次,所以其对答案的贡献就是0;当 n = 1时,其对答案的贡献是 x。
AC代码:
1 #pragma comment(linker, "/STACK:1024000000,1024000000") 2 #include<iostream> 3 #include<cstdio> 4 #include<cstring> 5 #include<cmath> 6 #include<math.h> 7 #include<algorithm> 8 #include<queue> 9 #include<set> 10 #include<bitset> 11 #include<map> 12 #include<vector> 13 #include<stdlib.h> 14 #include <stack> 15 using namespace std; 16 #define PI acos(-1.0) 17 #define max(a,b) (a) > (b) ? (a) : (b) 18 #define min(a,b) (a) < (b) ? (a) : (b) 19 #define ll long long 20 #define eps 1e-10 21 #define MOD 1000000007 22 #define N 1006 23 #define inf 1e12 24 int n; 25 int a[N]; 26 int main() 27 { 28 int t; 29 scanf("%d",&t); 30 while(t--){ 31 32 scanf("%d",&n); 33 for(int i=0;i<n;i++){ 34 scanf("%d",&a[i]); 35 } 36 if(n>1){ 37 printf("0 "); 38 continue; 39 } 40 if(n==1){ 41 int sum = a[0]; 42 for(int i=1;i<n;i++){ 43 sum=sum^a[i]; 44 } 45 printf("%d ",sum); 46 } 47 } 48 return 0; 49 }