hdu 5650 so easy (异或)

我们考虑集合中的每个数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 }
View Code
原文地址:https://www.cnblogs.com/UniqueColor/p/5405614.html