这道题目其实是后来临时加上去的比较简单的一道题目,典型的青蛙爬井问题,如果我这道题目不好理解,我们就当成青蛙爬井来做,有一口深V的井,一只青蛙白天爬上去v1米,夜晚休息掉下来v2米,问青蛙能几天爬出去.
也许有同学想当然,用v / (v1 – v2),这样其实忽略了一种情况,我们假设这一天刚开始的时候青蛙距离井口还有2米,它能白天爬2米,晚上落下来1米,那它完全可以在白天就爬出去,而不用再等到夜晚落下来, 如果按照上述的式子计算,结果便会错误,所以我们要先减去这特殊的最后一天,于是公式就变成了(V – v1)/(v1 – v2)+ 1,当然还有v1 <= v2的情况,那样青蛙永远爬不出去
这种数学方法的代码就不给出,同学们可以自己实现,下面给出具体的公式数学证明方法
解青蛙爬井问题时,千万别老是想“第一次爬了多高,第二次爬了多高”,而要换一种思路,去想“第一次爬的最高处多高,第二次爬的最高处多高”,等等。因为能否爬出来,只与到达的最高高度有关,当最高高度等于或大于井的高度时就爬出井了; 设井深C米,每次向上爬A米,接着向下滑B米,再向上爬,再向下滑,问几次爬出井?
根据上诉思路:第一次最高爬到A米处;由于向下滑B米,所以第二次最高爬到A-B+A米处,即A+(A –B)米处;同理第三次最高爬到A+(A –B)+(A –B)米处;以此类推,第N次最高爬到A+(A –B)×(N-1)米处;
当A+(A –B)×(N-1)≥C(井深)时,就爬出来了;
所以 N=(C- A)/(A-B)+1, 化简后就是 ( C - B ) / (A - B).