关于位运算的水题


找数字2


Time Limit: 25000ms, Special Time Limit:50000ms, Memory Limit:32768KB


Total submit users: 92, Accepted users: 67


Problem 11466 : No special judgement


Problem description


给定2n+1个数字,只有一个数字出现了奇数次,其余的数字都出现了偶数次,现在你需要找出出现奇数次的数字。


Input


包含多组数据,每组数据第一行为一个数n(0<=n<=5000000)。接下来一行包括2N+1个数字。


Output


对于每组数据,输出出现奇数次的数字.


Sample Input


1

1 1 1

2

1 2 1 3 3

3

1 1 2 2 3 3 4


Sample Output


1

2

4

这是湖师大的14年校赛的一道水题

题目的意思很清楚就是说要你在输入的数字中找出出现奇数次次数的数字

我刚上手就是两个for的嵌套,但是给出的数据很大,所以TLE了

后来哈德斯告诉我其实这个题目可以用位运算来做,然后我就看了看位运算

就有:

1^1=0 0^0=0

1^0=1 1^0=1

布尔型的就有:

True ⊕ False = True

False ⊕ True = True

False ⊕ False = False

True ⊕ True = False

如果是两个十进制的数的话,就会把十进制的数字先转化为二进制,然后再进行异或运算,这样统计出现奇数次个数数字的问题就解决了。

代码如下:

 1 #include<stdio.h>
 2 using namespace std;
 3 int main()
 4 {
 5     int n;
 6     while(scanf("%d",&n)!=EOF)
 7     {
 8         int a,b=0;
 9         for(int i=1;i<=2*n+1;i++)
10         {
11             scanf("%d",&a);
12             b^=a;
13         }
14         printf("%d\n",b);
15     }
16     return 0;
17 }

关于位运算的水题

时间: 2024-10-07 14:20:51

关于位运算的水题的相关文章

刷题向》一道关于位运算的神题(BZOJ3668)(HARD)

个人觉得这道题对于位运算的加深理解很有意义 根据题目所说,我们要求出一个在给定范围里的自变量,使得最终结果最大. 那么因为这道题是针对于位运算的,所以可以想到用对于位运算取极限情况,即对于"0"和"(2^bit)-1"这两种情况判断,然后即可以得到每一位在这几种操作之后的所有情况,然后根据合适的情况反推得到满足条件的最优解,然后就能A啦 直接甩题目&代码 Description 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后

关于 位运算 的一些题

1.编程实现两个int(32)位整数吗m和n的二进制表达中,有第多少个位不同?输入例子:1999 2299 则输出  7: #include<stdio.h> int main() {     int a = 0,b = 0,end = 0;     int count = 0;     printf("请输入两个数字:\n");     scanf("%d%d",&a,&b);     end = a & b;     whil

数学,位运算,典型题

数学,自然想到组合数,逆元,阶乘 先来一发组合数相关, #define MAXN 200001 const int mod=1000000007; typedef long long ll; int n,m,r,c; ll ans,s; ll inv[MAXN],fac[MAXN],dev[MAXN]; //inv[]逆元,fac[]阶乘,dev[]阶乘的逆元 void chuli(int x) { inv[1]=1; fac[1]=1; dev[1]=1; fac[0]=1; dev[0]=1

【位运算】【BFS】移动玩具

1054: [HAOI2008]移动玩具 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2246  Solved: 1246[Submit][Status][Discuss] Description 在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动 时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动次数将初始的玩具状态移 动到某人心中的目标状态. Input 前4行表示

位运算常用技巧总结(01)

基础知识 对于位运算,大家都很熟悉,基本的位操作有与(&&).或(||).非(!).异或(&)等等.在面试中经常会出现位运算相关的题,所以我就做了简单的整理,参考了很多写的很好的博客及书籍,在此一并谢过. 现在简单说一下,移位运算. 左移运算:x << y.将x左移y位,将x最左边的y位丢弃,在右边补y个0. 右移运算:x >> y.将x右移y位,这需要区分x是有符号数还是无符号数.在x是无符号数时,只需将x的最右边的y位丢弃,在左边补上y个0.在x是有符号

数据结构与算法-位运算

位运算位运算是把数字用二进制表示之后,对每一位上的0或者1的运算.理解位运算的第一步是理解二进制.二进制是指数字每一位都是0或者1,如十进制的2转换为二进制之后是10,而十进制的10转换为二进制之后是1010.在程序员圈子里有一个流传了很久的笑话,说世界上有10种人,一种人知道二进制,另一种人不知道二进制. 下面是几个常见的关于位运算的算法题:基本位运算位运算总共只有5种运算:与&,或|,异或^,左移<<,右移>>.与,或,异或的运算规则: 左移,右移运算规则:左移运算m

HDU1196_Lowest Bit【位运算】【水题】

Lowest Bit Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 8043    Accepted Submission(s): 5920 Problem Description Given an positive integer A (1 <= A <= 100), output the lowest bit of A. For

bzoj5108 [CodePlus2017]可做题 位运算dp+离散

[CodePlus2017]可做题 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 87  Solved: 63[Submit][Status][Discuss] Description qmqmqm希望给sublinekelzrip出一道可做题.于是他想到了这么一道题目:给一个长度为n的非负整数序列ai,你需 要计算其异或前缀和bi,满足条件b1=a1,bi=bi?1 xor ai(i≥2).但是由于数据生成器出现了问题,他生成的序列a 的长度特

LeetCode刷题总结-双指针、位运算和分治法篇

本文总结LeetCode上有关双指针.位运算和分治法的算法题,推荐刷题总数14道.具体考点分析如下图: 一.双指针 1.字符串和数组问题 题号:424. 替换后的最长重复字符,难度中等 题号:828. 独特字符串,难度困难 题号:923. 三数之和的多种可能,难度中等 2.实际场景应用问题 题号:826. 安排工作以达到最大收益,难度中等 3.元素对问题 题号:986. 区间列表的交集,难度中等 二.位运算 1.字符串和数组问题 题号:137. 只出现一次的数字 II,难度中等 题号:318.