我们经常能遇到这样一种问题,
手头有10瓶可乐,3个瓶盖能换一瓶新的可乐,问能喝到多少瓶可乐?
比赛的时候实在是不会,不得已百度了一下,说的都是如同云里雾里,答案也不对
比赛完痛定思痛,不能再错了!
自己总结一遍吧:
我们先把这个问题抽象出来,
小明有N瓶汽水,其中每M个瓶盖就可以兑换1瓶汽水,
计算 sum = N ( 初始 ) + ( N - M ) / ( M - 1 ) + 1 (消耗掉的瓶盖数量)
但是好像还是不够抽象,如果3个瓶盖能换2瓶呢?
我们注意到,最后得到的 sum 是由两个部分组成,一个是初始的瓶子数量 N ,另一个就是兑换出来的瓶子数,我们设兑换出 X 个瓶子,则 X = (兑换次数) * (单次兑换量) ;
上述 sum = N ( 初始 ) + ( N - M ) / ( M - 1 ) + 1 式子,就是单次兑换量为 1 情况下的一个结果;
现在回到这个问题:
小明有N瓶汽水,其中每M个瓶盖就可以兑换K瓶汽水,计算出兑换产生的新瓶盖数是:
( ( N - M ) / ( M - K ) + 1 ) * K
其中 ( N - M ) / ( M - K ) + 1 为兑换次数 ,第一次简单兑换瓶盖少了 M 个,后续兑换瓶盖数量净减少 M - K 个, 再乘上单次兑换量就ok啦!
故 sum = N (初始) + ( ( N - M ) / ( M - K ) + 1 ) * K