zoukankan      html  css  js  c++  java
  • 出现一次的数字

    看了何海涛的日志 他分别解决了一个 两个 三个 出现一次的数字的思路 给人的感觉有一生二 二生三 三生万物的思维

    现把自己的感悟写下来

    一个 思路很简单 所有数字异或的结果

    两个 关键是区别 所有的数字异或的结果同时也是两个出现一次数字异或的结果 记为XORresult<>0 区别这两个数字就用XORresult中为1的某一位

    三个 关键还是区别 所有的数字异或的结果同时也是三个出现一次数字异或的结果 记为XORresult

        这个地方是关键哦

          经过一系列的反证法 作者得出来了一些列结论

            具体过程:

            1. 对于任何三个不为0的数字 i, j, k, f(i)^f(j)^f(k) 结果不可能为0 如下图

              

              

             因此 f[ f( XORresult^a ) ^ f( XORresult^b ) ^ f( XORresult^c ) ... ] 结果不可能为0;

            2. XORresult^a XORresult^b XORresult^c 第m位不可能都是1 这个很容易理解吧!

  • 相关阅读:
    BZOJ 3744 Gty的妹子序列
    BZOJ 3872 Ant colony
    BZOJ 1087 互不侵犯
    BZOJ 1070 修车
    BZOJ 2654 tree
    BZOJ 3243 向量内积
    1003 NOIP 模拟赛Day2 城市建设
    CF865D Buy Low Sell High
    CF444A DZY Loves Physics
    Luogu 4310 绝世好题
  • 原文地址:https://www.cnblogs.com/Knuth/p/3097286.html
Copyright © 2011-2022 走看看