Java笔试编程题01
题意:
众所周知,牛妹非常喜欢吃蛋糕。
第一天牛妹吃掉蛋糕总数三分之一(向下取整)多一个,第二天又将剩下的蛋糕吃掉三分之一(向下取整)多一个,以后每天吃掉前一天剩下的三分之一(向下取整)多一个,到第n天准备吃的时候只剩下一个蛋糕。
牛妹想知道第一天开始吃的时候蛋糕一共有多少呢?
示例:
输入: |
---|
n=2 |
输出: |
蛋糕=3 |
输入: |
n=4 |
输出: |
蛋糕=10 |
二、思路
一、思路
用一个数组dp表示当前这天没吃蛋糕之前的蛋糕数目,那么dp的最后一个值,dp[n-1]一定是初始化为1,dp[i]由dp[i+1]推导而来:
因为:
dp[i+1] = dp[i] * (2/3) - 1
所以:
dp[i] = 3*(dp[i+1] + 1)/2
二、图示