首页 > 其他 > 详细

nyoj_528_找球号(三)_201404152050

时间:2014-04-16 06:02:17      阅读:527      评论:0      收藏:0      [点我收藏+]

 

找球号(三)

时间限制:2000 ms  |  内存限制:3000 KB
难度:2
 
描述

xiaod现在正在某个球场负责网球的管理工作。为了方便管理,他把每个球都编了号,且每个编号的球的总个数都是偶数。有一天,xiaod发现少了一个球,你能帮他找出丢的那个球的球号吗?

 
输入
有多组测试数据。每组数据包括两行。 第一行是一个整数N(0<N<1000000),表示现在所剩的球数。 随后的一行是N个数,表示所剩的各个球的编号M(0<M<10^9)。
输出
对于每组数据,输出弄丢的那个球的球号。
样例输入
5
1 1 3 6 6
3
1 2 1
样例输出
3
2
来源
hdu改编
上传者
ACM_丁国强
bubuko.com,布布扣
 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int n;
 6     while(scanf("%d",&n)!=EOF)
 7     {
 8         int i,a,s=0;
 9         for(i=0;i<n;i++)
10         {
11             scanf("%d",&a);
12             s ^= a;
13         }
14         printf("%d\n",s);
15     }
16     return 0;
17 }
18 //位运算--异或
bubuko.com,布布扣

 

位异或: 

位异或的运算法则吧:

1、a^b = b^a。

2、(a^b)^c = a^(b^c)。

3、a^b^a = b。

对于一个任意一个数n,它有几个特殊的性质:

1、0^n = n。

2、n^n = 0。

所以可以通过每次异或运算,最后剩下的值就是出现奇数次的那个数字。

 

ps:还可以用异或来交换变量

bubuko.com,布布扣
 1 #include <stdio.h>
 2 void swap(int &a,int &b)
 3 {
 4     a^=b;
 5     b^=a;
 6     a^=b;
 7 }
 8 int main()
 9 {
10     int n,m;
11     while(scanf("%d%d",&n,&m)!=EOF)
12     {
13        swap(n,m);
14        printf("%d %d\n",n,m);
15     }
16     return 0;
17 }
bubuko.com,布布扣

 

nyoj_528_找球号(三)_201404152050,布布扣,bubuko.com

nyoj_528_找球号(三)_201404152050

原文:http://www.cnblogs.com/xl1027515989/p/3667296.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!