找球号(三)

时间限制: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

一开始没有注意内存限制,直接开了一个数组,用数组下标记录球号,最后查询时用a[i]对2取余,余数为1时,输出 i 即可。提交以后才发现超内存了。

超内存的代码:

#include<stdio.h>
#include<string.h>
int a[1000002];
int main()
{int n,i,m,max;while(~scanf("%d",&n)){memset(a,0,sizeof(a));max=0;for(i=0;i<n;i++){scanf("%d",&m);a[m]++;if(m>max)max=m;}for(i=1;i<=max;i++)if(a[i]&1){printf("%d\n",i);break;}}return 0;
}        

后来听人说可以用异或的性质来处理,就查了一下异或的性质,写好代码提交上就AC了。

异或的运算规则: 0^0=0, 0^1=1,1^0=1,1^1=0

具体就是先将十进制数转化为二进制数(取8位或16位,不足补0),然后每一位对应异或运算,把结果转化为十进制数就是异或后的结果。如9^5=12;

00001001  (9的二进制表示)

00000101   (5的二进制表示)

00001100   (异或后的结果,用十进制表示就是12)

具体代码如下:

#include<stdio.h>
int main()
{int n,m,i,s;while(~scanf("%d",&n)){s=0;for(i=0;i<n;i++){scanf("%d",&m);s^=m;}printf("%d\n",s);}return 0;
}

另一种方法就是用C++里的容器处理,我看别人这样写的,做个参考。具体代码如下:

#include<stdio.h>
#include<set>
using namespace std;
int main()
{int n,a,b,i;set<int> T; //定义一个int型容器while(scanf("%d",&n)!=EOF){b=0;for(i=0;i<n;i++){scanf("%d",&a);if(T.find(a)==T.end())  T.insert(a);//容器中无与a相同的,插入aelse                    T.erase(a); //找到与a相同的,删除所有的a}printf("%d\n",*T.begin());T.clear();//清空容器}return 0;
}        

NYOJ 题目528 找球号(三)相关推荐

  1. NYOJ 138 找球号(二)哈希表

    找球号(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:5 描述 在某一国度里流行着一种游戏.游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i<=1 ...

  2. nyoj 86 找球号(一)

    找球号(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描写叙述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每一个球上都有一个整数编号i(0<=i< ...

  3. NYOJ-86 找球号(一)

    找球号(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数编号i(0<=i<=10 ...

  4. NYOJ 138 找球号(二) (哈希)

    题目链接 描述 在某一国度里流行着一种游戏.游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i<=100000000),编号可重复,还有一个空箱子,现在有两种动作:一种是&qu ...

  5. nyoj528 找球号(三) set容器的应用

    set容器的用法  具体可以看我的另外一篇stl的应用点击打开链接 #include <stdio.h> #include <set> using namespace std; ...

  6. 1299: 【二分查找】找球号

    题目描述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数编号i(0<=i<=100000000),编号可重复,现在说 一个随机整数k(0<=k<=10 ...

  7. NOJ --138 找球号(二)

    最基础的哈希表用法,先看所要存的个数,一般都是10N+10的内存,这样相当于十个位置里面有一个,空间是足够的.之前一直一直都是超时,就是因为内存开小的话就会出现死循环,因为存不了那么多个数 #incl ...

  8. nyoj-138-找球号(二)----hash算法之除留余数法+vector

    找球号(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:5 描述 在某一国度里流行着一种游戏.游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i<=1 ...

  9. nyoj--86--找球号(一)(hashset二分)

    找球号(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数编号i(0<=i<=10 ...

最新文章

  1. 11月最热论文Top10、五大学科最热论文Top3!
  2. 【Python】学习笔记总结5(Python垃圾回收及内存优化)
  3. java用户里获取部门id_javaWeb开发,根据部门ID查询该部门和下属所有部门的ID集合...
  4. 使用Open Liberty的开发模式最大程度地缩短周转时间
  5. JDK各版本新增的主要特性
  6. Jupyter的配置
  7. 静默安装Oracle11G
  8. 针式打印机打印发虚_针式打印机使用技巧
  9. 软件开发javascript html实现网页版日历代码_javascript技巧
  10. 一小时看懂Ruby代码基本逻辑(自定义metasploit模块)
  11. VMware Workstation Pro详细安装教程
  12. word背景图片设置a4纸大小教程
  13. 关于职业发展:一篇不错的文章分享
  14. 严蔚敏《数据结构》表达式求值
  15. Only fullscreen activities can request orientation终极解决方法
  16. html字体样式不显示不出来,css怎么设置不显示文字
  17. 根据M3U8文件地址下载网站上的视频
  18. 冒泡排序的交换次数 (树状数组)
  19. 2017cad光标大小怎么调_AutoCAD 2010如何调整光标的大小?调整光标大小的方法
  20. Remix快速导入本地文件夹

热门文章

  1. 车来了赵祺:贴近业务,是DT时代第一驱动力
  2. spring mvc-使用Servlet原生API作为参数
  3. WebApi 的CRUD 的方法的应用
  4. report things that go wrong
  5. domains where phd is best in business school
  6. student consulting system
  7. Node.js 第二个思路
  8. 神经网络 online problem class反馈
  9. Android Pie 引入 Keystore 新特性,安全防护再升级
  10. 利用 Selenium 自动化 web 测试【步骤详解】