九度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 ...
随机推荐
- 一个基于RSA算法的Java数字签名例子
原文地址:一个基于RSA算法的Java数字签名例子 一.前言: 网络数据安全包括数据的本身的安全性.数据的完整性(防止篡改).数据来源的不可否认性等要素.对数据采用加密算法加密可以保证数据本身的安全性 ...
- Java模式的秘密--java常用的几种模式
要学习设计模式,首先要明白设计模式,就是为实现某一种或某一组功能提供的代码编码方式.它没有固定的套路,只有约定俗成的风格.所有编码者可以根据已有的设计模式开放思维,设计出自己的设计模式,也会在无意中使 ...
- Python 实现指定目录下 删除指定大小的文件
import os, sys from stat import * BIG_FILE_THRESHOLD = 6000L #1000000L dict1 = {} # dict2 = {} # def ...
- Linux组件封装(三)使用面向对象编程封装Thread
C++11提供了thread,但是过于复杂,我们还是倾向于在项目中编写自己的Thread. Posix Thread的使用这里不再赘述. 重点是这个函数: #include <pthread.h ...
- PHP实现查看邮件是否被阅读
<? //当你在发送邮件时,你或许很想知道该邮件是否被对方已阅读.这里有段非常有趣的代码片段能够显示对方IP地址记录阅读//的实际日期和时间. error_reporting(0); Hea ...
- 使用UI Automation实现自动化测试--2
1. 首先建立一个待测试的winform程序,即UI Automation的服务端. 下面是button事件处理程序. private void CalculateButton_Click(objec ...
- JavaScript实现深拷贝(深复制) 面试题
1.两种方法实现深拷贝(深复制) (1)方法一:兼容性好,请仔细看代码(网上大部分代码有Bug) (2)方法二:需要对象满足JSON数据格式.JOSN数据格式:http://www.cnblogs.c ...
- 跨discuz站获取
1.在需要取得formhash的页面加入下面js代码,还需要jquery库. <script lanuage="javascript"> $(function(){ $ ...
- Linux Suse 查看wwn号码的方法
查看wwn号码 cat /sys/class/fc_host/host*/port_name *代表全部host目录
- centos7 中文输入法设置
安装centos7 后,他有自带的中文输入法安装包找到 applications->systemTools->settings->region&language 2:在 in ...