取火柴问题

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

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

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

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

每次两人取的火柴总量 = 取最少 + 取最多。

火柴总量  / 每次两人取的火柴总量 = 整数 ·············· 余数

有了上边的思路,

第一种情况:

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

第二种情况:

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

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

Read the fucking manual and source code
原文地址:https://www.cnblogs.com/qxynotebook/p/8808600.html