描述
现在社会上的抽奖活动简直是太多了。前段时间中国联通就举办了一个很无聊的抽奖活动,规则是每人可以向中国联通的短信系统发送一个实数,系统每天会从这些数字中选择一个无重复(就是有且只有一个)且最小的数,而发送这个最小数的用户就中奖了。现在我们也来设计一个抽奖系统。实数太麻烦,我们只考虑整数的情况。给你一堆整数,其中有且只有一个整数是唯一的,这个唯一的整数就是中奖数字,请写程序挑选出中奖数字。假设除中奖数字外,其余出现的数都有且只有两个。
输入
输入包含多组测试数据,每组测试数据首先包含一个整数N,表示本组测试数据下共有N个数。N一定是奇数,0<N<10000000, 输入的N个数在int范围内。
输出
对于每组输入的数据,请输出找出的中奖数字,每组输出占一行。
样例输入
5
1 1 2 2 3
5
123456789 123456788 123456790 123456788 123456789
样例输出
3
123456790
提示
请使用scanf函数而不是cin来避免超时。
这道题用自己想的方法大大超时,百度,发现是位运算 ( ^ )异或用法。
所以,不会就看位运算的那篇博客吧。。。。。
至于原理,看懂了个大概~~~
本文介绍了一种基于位运算的抽奖系统设计方案。该方案利用异或运算特性,在大量重复的整数中快速找到唯一的一个整数,即为中奖号码。文章提供了具体的输入输出示例,并指出使用scanf函数以避免超时。
512

被折叠的 条评论
为什么被折叠?



