3 回答

TA贡献1847条经验 获得超7个赞
这个问题的递归似乎有点矫枉过正,所以我建议另一种数学方法。
让我们从我们总是至少吃 X 个苹果的事实开始。真正的问题是在所有东西都吃完后总共会添加多少苹果。
假设 ni 将是 i “吃”后剩余的苹果数量。然后:
n0 = X
n1 = X - Y + 1
n2 = X - 2Y + 2
...
ni = X - i(Y - 1)
求解 ni = 0 将得到 i - 吃掉所有东西所需的“进食”次数:
ni = 0 = X - i(Y - 1) => i = X / (Y - 1)
现在我们知道要吃多少次了,所以要吃掉的苹果总数是原来的 X 加上吃掉 Y 个苹果的次数(因为每次这样做时我们都会得到一个额外的苹果):
tot = X + roundDown(i) = X * roundDown(X / (Y - 1))
我们将结果四舍五入,因为设置 ni = 0 捕获了部分“吃”,然后导致部分苹果。
例子:
X = 7, Y = 3 => tot = 7 + roundDown(7 / (3 - 1)) = 7 + roundDown(3.5) = 10
starting with 7:
0 eaten, 7 remain
3 eaten, 1 gained, 5 remain
3 eaten, 1 gained, 3 remain
3 eaten, 1 gained, 1 remains
1 eaten, nothing gained, nothing remains
--
10 eaten in total
- 3 回答
- 0 关注
- 248 浏览
添加回答
举报