zoukankan      html  css  js  c++  java
  • 异或性质

    异或运算

    相同结果是0,不同结果是1

    性质

    1.a^b = b^a

    2.(a^b)^c = a^(b^c)

    3.a^a = 0; a^0 = a;

    4.a^b^b = a^0=a;

    问题1.找一个只出现一次,其余都出现两次的数。

    根据性质3,将所有数做与运算

    问题2.找一个出现奇数次,其余出现偶数次的数。

    和问题1一样

    问题3.给定数字集合在1-1000之间的1001个数,找一个出现两次,其余都出现1次的数。

    1^2^...^1000=T

    1^2^...^1001=X

    假设n只出现两次

    T^X=1^1^2^2...^n^n^n...^1000^1000=n^0=n

    问题4.找出有两个不同的数只出现一次,其余都是出现两次

    将所有数做异或,结果得到a^b的结果x。

    找到x哪一位为1,根据异或定义,也就是说这一位,a,b中一定一个是1一个是0。

    按照这一位对原数组进行划分,然后就和问题1一样了。

    问题5..数组a[n]里存有1到n的所有树,除了一个数removed,找出这个missing的树

     missing = a[0]^a[1]...^a[n-1]^1^2^...^n;

  • 相关阅读:
    用windows脚本实现文件下载
    pku1325 Machine Schedule
    中位数
    pku1468 Rectangles
    最小密度路径
    合并序列
    PowerDesigner(5)转载
    责任链模式
    PowerDesigner(3)转载
    解释器模式
  • 原文地址:https://www.cnblogs.com/23lalala/p/2706655.html
Copyright © 2011-2022 走看看