A 牛牛分蛋糕
牛牛分蛋糕
http://www.nowcoder.com/questionTerminal/435b7ac0d7eb4927a0ce4ef2ffcc1385
牛牛分蛋糕 题解(数学方法)
由题可知,每个盘子最少一个,所以a + b < n 时,返回-1;
若要蛋糕数最少的盘子中的蛋糕尽可能多,则应该尽可能平均分配,因此每种蛋糕的盘子数应和蛋糕数成正比,盘子数四舍五入
对某一种蛋糕,最少蛋糕数的最大值为 总蛋糕数 / 盘子数,向下取整
最后结果取较小的那一个
class Solution { public: /** * 处理函数,返回在所有分法中,蛋糕数量最少的盘子中分到最多的蛋糕数量 * @param n int整型 n个盘子 * @param a int整型 a蛋糕数量 * @param b int整型 b蛋糕数量 * @return int整型 */ int solve(int n, int a, int b) { // write code here if (a + b < n) return -1; double x = a, y = b; int t1 = (x / (x + y)) * n + 0.5; //按蛋糕比例分配盘子,并取四舍五入 int t2 = n - t1; return a / t1 < b / t2 ? a / t1 : b / t2; //返回平均蛋糕较小的那一个 } };