zoukankan      html  css  js  c++  java
  • 取火柴问题

    题目:现在有100根火柴,两个人取,只能取 1 到 2 根,怎么保证我必胜?

    这个问题,当时问我时,我有点懵,当时想的是,如果能把这 100 根火柴分成偶数份,那我后取,肯定赢,如果我先取,那么就分成奇数份,哈哈,这跟题目的答案本身,半毛钱关系都没有,后边下来查了查,有自己总结了,如下:

    这个问题就归结于,如果能保证每次两个人取得火柴数量都一样,那么就好办了,那么火柴的数量是多少的时候,才能保证呢?

    因为两个人每次都必须去,那么,取火柴的最小数量 和 最大数量 加起来就是每次两个人去火柴的总量,不管对方怎么取,那么你总能取相应的数量,从而来达到 取火柴的最小数量 和 最大数量 之和。

    每次两人取的火柴总量 = 取最少 + 取最多。
    
    火柴总量  / 每次两人取的火柴总量 = 整数 ·············· 余数

    有了上边的思路,

    第一种情况:

    如果 火柴的总量 刚好能 整除,那么,我们只要后取,就能保证胜利。

    第二种情况:

    如果不能整除,也就是余数不为0,这时候,我们就先取,取的数量 就是 余数的数量。

    取完后,现在的情况就变成了第一种情况,即 火柴的总量 刚好能 整除,而且是对象先取(因为是我先取了余数个数量),所以,我还是获胜。

    Read the fucking manual and source code
  • 相关阅读:
    2021.5.16 Android聊天功能
    2021.5.15 Android Gestures示例
    2021.5.14 程序员修炼之路:从小工到专家阅读笔记02
    KL 散度和交叉熵
    UBOOT学习
    UCOSII学习
    cortex-M3/M4体系学习
    一步步写RTOS
    38 操作系统-中断处理与特权级转移
    MDK、IAR将变量定义到指定位置
  • 原文地址:https://www.cnblogs.com/qxynotebook/p/8808600.html
Copyright © 2011-2022 走看看