大意:给出一个数字集合,对其所有子集进行异或操作,输出结果。
分析:异或(xor):按位运算,相同为0,不同为1。每一个数出现的次数为C(n-1,n-1)+C(n-1,n-2)+...+C(n-1,1)+1=2^(n-1)。只要有1个以上的数结果必为0.
代码:
#include <iostream> #include<cstdio> using namespace std; int a[1005]; int main() { int t; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d",&a[i]); if(n==1) printf("%d ",a[0]); else printf("0 "); } return 0; }