九度OJ 1256:找出两个只出现了一次的数字 (位运算)
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:568
解决:186
- 题目描述:
 - 
一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
 
- 输入:
 - 
输入的第一行包括一个整数N(1<=N<=1000)。
接下来的一行包括N个整数。 
- 输出:
 - 
可能有多组测试数据,对于每组数据,
找出这个数组中的两个只出现了一次的数字。
输出的数字的顺序为从小到大。 
- 样例输入:
 - 
6
2 3 9 3 7 2 
- 样例输出:
 - 
7 9
 
思路:
巧妙的利用异或位运算能高效的解决该问题。
代码:
#include <stdio.h>
#include <string.h> #define N 1000 int main()
{
int n, i;
int a[N];
int m, m1, m2, k;
while(scanf("%d", &n)!=EOF)
{
m = 0;
for (i=0; i<n; i++)
{
scanf("%d", &a[i]);
m ^= a[i];
}
k = 1;
while ((m&1) == 0)
{
m >>= 1;
k <<= 1;
}
m1 = 0;
m2 = 0;
for (i=0; i<n; i++)
{
if ((a[i]&k) != 0)
m1 ^= a[i];
else
m2 ^= a[i];
}
if (m1 <= m2)
printf("%d %d\n", m1, m2);
else
printf("%d %d\n", m2, m1);
}
return 0;
}
/**************************************************************
Problem: 1256
User: liangrx06
Language: C
Result: Accepted
Time:570 ms
Memory:912 kb
****************************************************************/
九度OJ 1256:找出两个只出现了一次的数字 (位运算)的更多相关文章
- 九度oj 题目1256:找出两个只出现了一次的数字
		
题目描述: 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 输入: 输入的第一行包括一个整数N(1<=N<=1000). 接下来的一行包括N个 ...
 - 九度OJ 1035:找出直系亲属(二叉树)
		
题目1035:找出直系亲属 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1309 解决:521 题目描述: 如果A,B是C的父母亲,则A,B是C的parent,C是A,B的child,如 ...
 - js-FCC算法Smallest Common Multiple。找出两个参数和它们之间的连续数字的最小公倍数。
		
存档. 找出能被两个给定参数和它们之间的连续数字整除的最小公倍数. function smallestCommons(arr) { //分解质因数法,分解为若干个质数相乘 var arrratio=[ ...
 - 基于visual Studio2013解决面试题之0608找出两个只出现一次的数
		
 题目
 - 九度oj 题目1283:第一个只出现一次的字符
		
题目描述: 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符. 输入: 输入有多组数据 每一组输入一个字符串. 输出: 输出第一个只出现一次的 ...
 - 九度oj题目1009:二叉搜索树
		
题目描述: 判断两序列是否为同一二叉搜索树序列 输入: 开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接 ...
 - 【九度OJ】题目1170:找最小数 解题报告
		
[九度OJ]题目1170:找最小数 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1170 题目描述: 第一行输入一个数n,1 < ...
 - 【九度OJ】题目1199:找位置 解题报告
		
[九度OJ]题目1199:找位置 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1199 题目描述: 对给定的一个字符串,找出有重复的 ...
 - 【九度OJ】题目1052:找x 解题报告
		
[九度OJ]题目1052:找x 解题报告 标签(空格分隔): 九度OJ [LeetCode] http://ac.jobdu.com/problem.php?pid=1052 题目描述: 输入一个数n ...
 
随机推荐
- memcache运行机制(转)
			
网上其实有很多文章说明了memcached是如何运作的,特别是底层的内存分配是如何运作的.我参考过很多资料,比较有启发意义的有几个: 首先是官方的英文资料,虽然文章太多.很难看懂,我个人觉得说得也不是 ...
 - 一个对比各种开源库的网站  libhunt
			
https://www.libhunt.com/ https://github.com/LibHunt/awesome-javascript
 - [Algorithms] Solve Complex Problems in JavaScript with Dynamic Programming
			
Every dynamic programming algorithm starts with a grid. It entails solving subproblems and builds up ...
 - VB程序无法运行,Component ‘MCI32.OCX’错误怎么办
			
1 提示Component 'MCI32.OCX'错误 2 搜索你电脑的MCI32.OCX这个文件 3 把它复制到任意位置,然后再同一个目录下新建一个文本文档,输入regsvr32 MCI32 ...
 - Git版本管理
			
1.显示当前工作目录 pwd 2.把当前目录初始化为git可以管理的仓库 git init 3.把文件添加到仓库 git add xxx.txt 4.告诉git,把文件提交到仓库 .-m后面输入的是本 ...
 - Windows / Linux 一件编译zlib库
			
一. 下载zlib库 : http://www.zlib.net 本文以 zlib-.tar.xz 为例 二. 解压文件得到 zlib- 文件夹,修改 zlib-/CMakeLists.txt 文 ...
 - HTML 5 音频Audio
			
在HTML5标准网页里面,我们能够运用audio标签来完毕我们对声音的调用及播放. 下面是最常常见到的运用HTML5三种基本格式: 1.最少的代码 <audio src="song.o ...
 - python——内置对象
			
python的内置对象 对象类型 常量示例/用法 Number(数字) 3.14159, 1234, 999L 3+4j String(字符串) 'spam', "guido's" ...
 - 【Shell】Read命令
			
read命令从键盘读取变量的值,通常用在shell脚本与用户进行交互的场合.该命令可以一次性读取多个变量的值,变量的输入和输出需要使用空格隔开.在read命令后面,如果没有指定变量名,读取的数据将被自 ...
 - java模拟异步消息的发送与回调
			
http://kt8668.iteye.com/blog/205739 本文的目的并不是介绍使用的什么技术,而是重点阐述其实现原理. 一. 异步和同步 讲通俗点,异步就是不需要等当前执行的动作完成 ...