hdu2095异或问题
来源:互联网 发布:最小公倍数求法 c语言 编辑:程序博客网 时间:2024/05/24 15:39
异或,英文为exclusive OR,或缩写成xor
异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:
a⊕b = (¬a ∧ b) ∨ (a ∧¬b)
如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位。
C语言中异或的符号为^;
运算法则为
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。
所以可以通过每次异或运算,最后剩下的值就是出现奇数次的那个数字。
¥¥¥¥¥¥¥¥¥几个数异或满足交换律。2^3^2=2^2^3=0^3=3.
所以,这道题用异或的方法来做就很简单了= =
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>int main(){ int n,x,ans,i; while(scanf("%d",&n),n!=0) { scanf("%d",&ans); for(i=1;i<n;i++) { scanf("%d",&x); ans^=x; } printf("%d\n",ans); } return 0;}
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h> int a[1100000];int cmp(const void *a,const void *b){ return *(int *)a-*(int *)b;}int main(){ int i,n; while(scanf("%d",&n),n!=0) { for(i=0; i<n; i++) scanf("%d",&a[i]); qsort(a,n,sizeof(a[0]),cmp); if(a[0]!=a[1]) printf("%d\n",a[0]); else if(a[n-1]!=a[n-2]) printf("%d\n",a[n-1]); else for(i=1; i<n-1; i++) if(a[i]!=a[i-1]&&a[i]!=a[i+1]) printf("%d\n",a[i]); } return 0;}
0 0
- hdu2095异或问题
- hdu2095异或
- HDU2095(异或运算)
- hdu2095异或处理
- hdu2095 异或法
- 异或的经典运用hdu2095
- hdu2095 像水题的不错题 异或运算
- hdu2095 find your present (2)(异或)
- hdu2095
- hdu2095
- hdu2095
- HDU2095
- HDU2095 Map Stl 或异 找出奇数个数的数字 map stl 是啥!!!!
- 08-30 HDU_Steps1 HDU2095
- 异或问题
- HZAU 异或问题
- 异或 问题
- 异或问题(java)
- TCP/IP协议(二)
- Android ScrollView的属性
- Java-文件读取写入整型(字节流)
- 安装Cocoapods
- 计算机视觉和模式识别领域SCI期刊介绍
- hdu2095异或问题
- your security settings have blocked an application signed with an expired or
- 研发各阶段易犯错误小结
- zzuoj 10403: D.山区修路
- android 开发环境 简介
- 2016 百度之星 ProblemA -- (Hash+乘法逆元,利用两种方法求逆元)
- 使用AFNetworking
- C++:STL标准入门汇总
- 面试题24