输赢问题

此类题目的原型为:两个人比赛,从某一个数(Ns)开始,每次最间隔(1~n)个数,谁先到某一个指定数(Ne), 谁就输(或者赢)!

 

比如乒乓球问题:假设排列着100个乒乓球,由两个人轮流拿球装入口袋,能拿到第100个乒乓球的人为胜利者。条件是:每次拿球者至少要拿1个,但最多不能超过5个,问:如果你是最先拿球的人,你该拿几个?以后怎么拿就能保证你能得到第100个乒乓球?

 

 

解析如下(分两种情况):

 

1: 谁先到(Ne)就输: 我们从后往前推,要想赢,那么必须 Ne-1 的这个数是你的;因为然后对手间隔数的范围为(1~n), 所以继续往前推,你应该说的数为:(Ne - 1 - (1+n));依此类推,你要说的每一个数必须满足如下通式:

 

Ne - 1 - (1+n)*t  (t:为自然数)

 

那么你要说的第一个数就是: (Ne-1) mod (1+n).

 

2:谁先到(Ne)就赢: 我们从后往前推,要想赢, 同理,那么Ne - (1+n)这个数你必须说,同理应该满足如下的通式:

 

    Ne - (1+n)*t  (t:为自然数)

 

那么你要说的第一个数就是: (Ne) mod (1+n).

 

       因此,对于乒乓球的问题,属于第二种问题: 带入通式计算得到:只有第一个人先拿100 mod (1+5) = 4 个乒乓球,而且后面只要他不疏忽,每次拿球的数量必须满足: 本次拿球的数量 + 口袋中已有的数量 = 上次他拿完球后口袋中剩余的球的数量 + 6 (1+n)。这样他必然能赢。 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值