异或的妙用

原创 2007年09月21日 10:05:00

整理自csdn论坛里的一个帖子!

有两个文件A,B。
A文件中存储了N个整形数(N可能很大,里面的数可以重复)。
B文件比A文件少了一个数,其他的全部相同,但顺序不一样。
设计一个方法,判断B文件中比A文件少了哪个数。

思路:     int A = A1^A2^A3^...^An
              int B = B1^B2^B3...^Bn-1;
               那么所求的那个数
              int c= A^B.

程序:


#include <stdio.h>
void main()
{
    int A[]={1,2,3,4,5,6,7,8,9,10 ,9,8,7,6,5,4,3,2,1};
    int B[]={1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1,9};
 
    int x = 0;
    for( int i=0;i<19;++i)
    {
      x ^= A[i];
   }
   for( int j=0;j<18;++j)
   {
      x ^=B[j];
   }
     printf("%d/n",x);
}

异或还可用来交换两个整数的值时不用第三个参数.

如a=11,b=9.以下是二进制
a=a^b=1011^1001=0010;
b=b^a=1001^0010=1011;
a=a^b=0010^1011=1001;
这样一来a=9,b=11了。

比较下题:

1~1001放在1000大小的数组里,然后判断哪个数没有存进去。

思路:因为该题的数字较小,不考虑溢出,可分别求和将1+2+.....+1001=sum1, a[0]+a[1]+......+a[999]=sum2;然后相减求差,sum1-sum2的结果就是没有存进去的数.由于上题的数字可能很大需要考虑溢出问题,所以用异或法最优.

版权声明:本文为博主原创文章,转载请注明出处。

相关文章推荐

异或的妙用

http://blog.leezhong.com/tech/2011/06/03/php-xor-find-num.html 给你1-1000个连续自然数,然后从中随机去掉两个,再打乱顺序,...

异或的妙用

智力算法中异或的妙用 2009-10-26 20:16:05 分类:     今天在csdn上看到一个有趣的智力题目:有1,1,2,2,3,3....n,n共2n个数,其中各个数放的顺...

异或(^)的妙用——求一组数据中唯一一个出现奇数次的数!

在C语言中,“^”是一个双目运算符,用于完成两个数据的按位异或操作。 例如: 5^4 (00000101)^(00000100)=(00000001)=1 ...

异或的妙用

异或 ^ ,相同为0,不同为1.通过这个性质,我们能得出许多巧妙的解决问题的办法.   异或的一些性质: A^A=0; 0^A=0; A^B^A=B;(满足交换律)   应用: 1. ...

【简单题】【异或的妙用】-DlutOj-1216

题目链接:http://acm.dlut.edu.cn/problem.php?id=1216 题目描述: 航神!你给我去重修语文! 这题

word软件的妙用

  • 2014-01-12 17:54
  • 11.42MB
  • 下载

LabVIEW事件结构的妙用

  • 2013-03-01 23:06
  • 326KB
  • 下载

hdu5909 Tree Cutting - FWT 加速集合异或(*)

http://acm.hdu.edu.cn/showproblem.PHP?pid=5909 问题描述 Byteasar有一棵nn个点的无根树,节点依次编号为11到nn,其中节点i...

labview结构事件妙用

  • 2012-03-09 17:15
  • 326KB
  • 下载

小标签妙用

  • 2013-06-05 14:53
  • 155KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)