问题描述
小F最近迷上了玩一款游戏,她面前有一个永久代币卡的购买机会。该卡片的价格为 a 勾玉,每天登录游戏可以返还 b 勾玉。小F想知道她至少需要登录多少天,才能让购买的永久代币卡回本。
测试样例
样例1:
输入:
a = 10, b = 1
输出:10
样例2:
输入:
a = 10, b = 2
输出:5
样例3:
输入:
a = 10, b = 3
输出:4
题解
function solution(a, b) {
if (b <= 0) {
throw new Error("Daily return must be greater than 0 to eventually break even.");
}
return Math.ceil(a / b);
}
function main() {
console.log(solution(10, 1) === 10);
console.log(solution(10, 2) === 5);
console.log(solution(10, 3) === 4);
}
main();
解题思路
要解决这个问题,我们需要计算小F至少需要登录多少天,使得通过每天登录获得的勾玉能够抵消购买永久代币卡的成本。具体来说,我们需要找到最小的天数d,使得d * b >= a。
-
输入验证:
- 检查
b是否大于0,因为如果每天返还的勾玉为0或负数,小F将永远无法回本。
- 检查
-
计算回本天数:
- 使用
Math.ceil(a / b)来计算至少需要登录的天数。Math.ceil函数用于向上取整,确保即使有余数,也会多算一天。
- 使用
-
返回结果:
- 返回计算得到的天数。
这种方法简单且高效,能够快速计算出小F需要登录多少天才能回本。