首页 > 试题广场 >

牛妹的蛋糕

[编程题]牛妹的蛋糕
  • 热度指数:10568 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
众所周知,牛妹非常喜欢吃蛋糕。
第一天牛妹吃掉蛋糕总数三分之一(向下取整)多一个,第二天又将剩下的蛋糕吃掉三分之一(向下取整)多一个,以后每天吃掉前一天剩下的三分之一(向下取整)多一个,到第n天准备吃的时候只剩下一个蛋糕
牛妹想知道第一天开始吃的时候蛋糕一共有多少呢?

有可能出现多解,返回任意一种可能的结果即可。
示例1

输入

2

输出

3
示例2

输入

4

输出

10

备注:
0
                    
                    
                                                        
public int cakeNumber(int n) {
    // write code here
    int start = 1;
    for (int i = n - 1; i > 0; i--) {
        // x - (n/3+1) = y
        // x - x/3 - 1 = y
        // 2/3x = y + 1
        // x = (y + 1) * 3 / 2
        start = (start + 1) * 3 / 2;
    }
    return start;
}

发表于 2021-10-16 18:30:18 回复(0)
import java.util.*;


public class Solution {
    /**
     * 
     * @param n int整型 只剩下一只蛋糕的时候是在第n天发生的.
     * @return int整型
     */
    public int cakeNumber (int n) {
        // write code here
      
        int m=1;
        int number=0;
        for(int i=n-1;i>=1;i--){
            
         number=(m+1)*3/2;
           m=number;
            
        }
        return number;
        
    }
   
}

发表于 2020-08-06 21:26:32 回复(0)
import java.util.*;


public class Solution {
    /**
     * 
     * @param n int整型 只剩下一只蛋糕的时候是在第n天发生的.
     * @return int整型
     */
    public int cakeNumber (int n) {
        // write code here
        int t = 1;//总数
        for (int i = 0; i < n - 1; i++) {//循环n-1次,表示n-1天前的总数
            t = (t + 1) * 3 / 2;//t[n-1]=(t[n]+1*3)/2
        }
        return t;
    }
}

编辑于 2020-04-17 20:28:46 回复(0)
个人认为这一题有些问题
比如第一天开始吃的时候有2块或3块蛋糕,第二天开吃的时候都是1,这样就会出现一个n对应两个结果。
所以无法通过后一天准确确定前一天蛋糕数量。

发表于 2020-03-25 01:40:14 回复(1)
由题可得公式x-(x/3)-1=n
x为总蛋糕数n为天数
需要用n表示x,得出结果为x=(3*n+3)/2
用递归套公式可解
编辑于 2020-03-14 20:37:18 回复(0)

问题信息

难度:
5条回答 5618浏览

热门推荐

通过挑战的用户

查看代码