博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NYOJ 528 找球号(三)
阅读量:6259 次
发布时间:2019-06-22

本文共 871 字,大约阅读时间需要 2 分钟。

1 #include
2 int main() 3 { 4 int i,res,n; 5 while(~scanf("%d",&n)){ 6 res=0; 7 while(n--){ 8 scanf("%d",&i); 9 res^=i;10 }11 printf("%d\n",res);12 }13 return 0;14 }

我们先了解一下位异或的运算法则吧:

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。

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

还可以用STL中的set容器,不过好像没有上面的效率高,贴上代码:

1 #include
2 #include
3 using namespace std; 4 int main() 5 { 6 int i,n; 7 set
s; 8 while(cin>>n){ 9 while(n--){10 cin>>i;11 if(s.find(i)==s.end())12 s.insert(i);13 else14 s.erase(i);15 }16 cout<<*s.begin()<

 

转载于:https://www.cnblogs.com/shihuajie/archive/2013/03/21/2973749.html

你可能感兴趣的文章
大道至简 电话号码重新成为O2O新宠
查看>>
Office 365离线安装
查看>>
jar包与was版本不兼容怎么办
查看>>
将Windows Server 2008 R2网络升级到Windows Server 2012
查看>>
修改计算机名的注意事项
查看>>
WIN7关闭共享后怎样去掉图标上的小锁
查看>>
SRV记录注册不成功的可能的原因
查看>>
一步完成 MySQL 向 Redis 迁移
查看>>
【VMC实验室】在QCloud上创建您的SQL Cluster(4)
查看>>
我的友情链接
查看>>
卢松松:每个网站都该有个监测服务
查看>>
Memcache与MySQL并肩作战
查看>>
使用Android模拟器测试Linux驱动(1)
查看>>
验证码广告:站长增加收入新渠道
查看>>
objective-c 枚举王国遍历数组
查看>>
C# WinForm开发系列 - OWC
查看>>
关于利用VS2008创建项目遇到的小困惑备忘
查看>>
发布一款域名监控小工具——Domain(IP)Watcher
查看>>
VBS中数组的各种处理方式
查看>>
通用数据权限管理系统设计
查看>>