BestCoder Round #77 (div.2) -so easy(组合)

so easy

Accepts: 512
Submissions: 1601
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
问题描述
已知一个包含 nnn 个元素的正整数集合 SSS,设 f(S)f(S)f(S) 为集合 SSS  中所有元素的异或(XOR)的结果。
如:S={1,2,3}S = \{1, 2, 3\}S={1,2,3}, 则 f(S)=0f(S) = 0f(S)=0。

给出集合 SSS,你需要计算 将所有 f(s)f(s)f(s) 进行异或后的值, 这里 s⊆Ss \subseteq SsS.
输入描述
多组测试数据。第一行包含一个整数 T(T≤20)T(T\leq 20)T(T20) 表示组数。

每组测试数据第一行包含一个数 n(1≤n≤1,000)n(1\leq n \leq 1,000)n(1n1,000) 表示集合的大小,第二行为 nnn 的数表示集合元素。第 i(1≤i≤n)i(1\leq i \leq n)i(1in) 个数 0≤ai≤1000,000,0000 \leq a_i \leq 1000,000,0000ai1000,000,000 且数据保证所给集合中没有重复元素。
输出描述
对于每组测试数据,输出一个数,表示将所有的 f(s)f(s)f(s) 的异或之后的值。
输入样例
1
3
1  2  3
输出样例
0
Hint
样例中,S={1,2,3}S = \{1, 2, 3\}S={1,2,3}, 它的子集有∅\varnothing, {1}, {2}, {3}, {1, 2}, {1, 3}, {2, 3}, {1, 2, 3}
 
 
思路:
  这题是求全部的f(s),只要画到5的时候就发现是每个数都有15个,所以是奇数个,那就是没异或过,偶数个就是0.所以这题只要统计每个数出现的是偶数个还是奇数个就OK了,这题因为是偶数时直接输出没输入那n个值wa了几次,太粗心了。
 
 
AC代码:
 
 
#include<iostream>
#include<functional>
#include<algorithm>
#include<cstring>
#include<string>
#include<vector>
#include<cstdio>
#include<queue>
#include<cmath>
#include<map>
#include<set>
using namespace std;
#define CRL(a) memset(a,0,sizeof(a))
#define QWQ ios::sync_with_stdio(0)
#define inf 0x3f3f3f3f
typedef unsigned long long LL;
typedef  long long ll;

const int T = 10000+50;
const int mod = 1000000007;

ll comp(int x,int y)
{
	double cm = 1.0;
	while(y)
	{
		cm *= double(x--)/double(y--);
	}
	return cm+0.5;
}

int main()
{

#ifdef zsc
    freopen("input.txt","r",stdin);
#endif

	int n,m,i,j,k;
	scanf("%d",&n);
	while(n--)
	{
		scanf("%d",&m);
		ll t=1;
		for(i=1;i<m;++i)
		 t+= comp(m-1,i);
		if(t%2==0){
			for(i=0;i<m;++i){
			  scanf("%d",&j);
		    }
			printf("0\n");
			continue;
		}
		scanf("%d",&k);
		for(i=1;i<m;++i){
			scanf("%d",&j);
			k^=j;
		}
		printf("%d\n",k);
	}
	
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值