【发布时间】:2020-11-22 14:07:48
【问题描述】:
这个想法是应用线性递增折扣,直到您达到m 值,然后所有下一次购买都是m
看起来很简单,但我的方法没有涵盖一些边缘情况。
示例:
输入:
16、2、1、9981
输出:
9918
预期输出:
9917
我错过了什么?
我们也高度赞赏更好的方法
// tried on (20,3,6,80) works like charm
function howManyGames(p, d, m, s) {
// Return the number of games you can buy
if(s<p) return 0
let remaining = s-p
let max = p
let min = m
let count = 1
while(remaining > min && max > min) {
count++
max-=d
remaining -= max
}
return count + (m !==0?Math.floor(remaining/m): 0)
}
问题描述:
您想从著名的在线视频游戏商店购买视频游戏 雾。
通常,所有游戏都以相同的价格出售,
pdollars。然而, 他们计划下个月在 您可以以更便宜的价格购买游戏。具体来说,第一个 您在促销期间购买的游戏将以pdollars 出售,但每 您购买的后续游戏将以低于ddollars 的价格出售 您购买的前一个的成本。这将持续到 cost 变得小于或等于mdollars,之后每场比赛 您购买将花费mdollars。例如,
如果 p=20 , d=3 , m=6,
那么以下是您购买的前 11 款游戏的费用,按顺序排列:
20, 17, 14, 11, 8, 6, 6, 6, 6, 6您的 Mist 钱包中有
s美元。万圣节特卖期间您可以购买多少游戏?
【问题讨论】:
标签: javascript algorithm