so easy
Accepts: 450
Submissions: 1299
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
问题描述
已知一个包含 n 个元素的正整数集合 S,设 f(S) 为集合 S 中所有元素的异或(XOR)的结果。 如:S={1,2,3}, 则 f(S)=0。 给出集合 S,你需要计算 将所有 f(s) 进行异或后的值, 这里 s⊆S.
输入描述
多组测试数据。第一行包含一个整数 T(T≤20) 表示组数。 每组测试数据第一行包含一个数 n(1≤n≤1,000) 表示集合的大小,第二行为 n 的数表示集合元素。第 i(1≤i≤n) 个数 0≤ai≤1000,000,000 且数据保证所给集合中没有重复元素。
输出描述
对于每组测试数据,输出一个数,表示将所有的 f(s) 的异或之后的值。
输入样例
1 3 1 2 3
输出样例
0
Hint
样例中,S={1,2,3}, 它的子集有∅, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}
看样例:
每个元素出现为偶数次,偶数次的元素亦或就是0;因为题中说了元素只会出现一次;
所以当n=1,亦或后就是它自己,否则就是0;
#include <iostream>
using namespace std ;
long long dp[1000000],a[1000000];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,a ;
scanf("%d",&n);
for(int i = 1 ; i<=n;i++)
{
cin>>dp[i];
}
if(n==1) printf("%lld\n",dp[1]);
else printf("0\n");
}
return 0 ;
}