这个想法是应用线性递增折扣,直到达到该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)
}
问题描述:
您想从著名的在线视频游戏商店 Mist 购买视频游戏。
通常,所有游戏都以相同的价格(美元)出售
p
。然而,他们计划下个月举行季节性万圣节促销活动,您可以以更便宜的价格购买游戏。具体来说,您在特卖期间购买的第一款游戏将以p
美元出售,但您随后购买的每款游戏将以d
比您购买的前一款游戏便宜的美元出售。这种情况将持续下去,直到成本变得小于或等于m
美元,之后您购买的每个游戏m
都将花费美元。例如,
如果 p=20 , d=3 , m=6,
那么以下是您购买的前 11 款游戏的费用(按顺序排列):
20, 17, 14, 11, 8, 6, 6, 6, 6, 6
s
您的 Mist 钱包里有美元。万圣节特卖期间您可以购买多少款游戏?
撒科打诨
相关分类