python经典数学案例 | 您所在的位置:网站首页 › 报7游戏数学题 › python经典数学案例 |
原题如下: 有一个抢数游戏,其规则是两人轮流报数,每次可以报1 个,2 个,3 个,4个数,但不许不报也不许多报,如果第一个人报1,2 或1,2,3,第二个人接着往下报,然后第一个人接着往下报,以此类推,那么第一个人第一次应该报( )才可能稳抢到1024. 1024,有点陡,我们先换一个小一点的数来分析: 抢“30”游戏,两人从1开始轮流数数,最少数1个数,最多数3个数,谁数到30谁赢,怎么数? 分析(假设其中一个人是我,且我想赢): 如果数到30就赢,且每次只能数1-3个数,那只需要数到26就可以了 当我数到26,此时对方 加上1到3中的任何一个数都到不了30,反而只需要等对方数完后我再走一步就到30了,比如对方数2,就到28我再数个2就到30,对方数3,我数1就到30... 怎样才能走到26呢,想一想: 首先我们观察一下每次报的数:1、2、3,这三个数能不能两两组合成一个固定的数,我们发现,1+3=4, 2+2=4,所以这个固定的组合数就是 4 (自己去多写几个数来找找规律) 由此得方案: 目标数 30 减去“最多数 3 个数”中的 3,再减 1 得 26 如果 26 能被组合数 4 整除,则只需要对方先出,然后我每次出一个和对方相加和为 4 的数即可,最后我一定能数到 30 但很明显此处的 26 不能被组合数 4 整除,所以: 走第一步时一定要掌握主动权,将 26 钝化为可以被 4 整除的数,即 26 减去我第一步走的数后需要能被 4 整除。 故我要走第一步,且必须数 2 。26 - 2=24, 得到的 24 能被 4 整除 接下来只需要等对方出,(随便出1-3中哪个数),我方只需要出一个和对方数字相加为 4 的数即可胜利! (24/4=6 。即六轮后我就能数到30) 答案: 我先数,数2;接下来我只需要数一个和对方相加为 4 的数即可我赢、 接下来我们再来分析 1024 这道题: 方案如下: 1) 1024-4-1 = 1019 即只需要拿到1019即可赢 2) 组合数为:4& |
CopyRight 2018-2019 实验室设备网 版权所有 |