题解 | #牛妹的蛋糕#
牛妹的蛋糕
https://www.nowcoder.com/practice/1f7280d9897d4305b2da6790fe131729
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * @param n int整型 只剩下一只蛋糕的时候是在第n天发生的. * @return int整型 */ public int cakeNumber (int n) { if (n<=1){ return n; } int m=1; while (n>1){ m=(m+1)*3/2; n-=1; } return m; } }
简单数学逆推即可:
若n<=1, 则只需1天 或0天则吃完,故返回n。
若n>1, 设第n天剩余m块 则从最后一天剩1块开始倒退. 第n-1天是第n天(数量+1)*3/2.
该逆推回退到第1天 需要n-1步,故设检查条件为n>1, 即while loop run (n-1) times. 毕。