Python 买 X 送 X 免费公式
Buy X Get X for free formula in Python
在买一送一的情况下,计算起来很简单,只要除以2就是我们想要的数量(例如:买三送三,所以我们得到六)。
但是当它变得更复杂时,比如买 4 送 1,如果我们想买 13(答案是买 11,因为你免费送 2),最好的购买选择是什么?我觉得有趣的是它很容易计算,但是放到代码里,我就迷路了。
在买 4 送 1 中,这是我发现的模式,但同样,我不知道如何将其实际放入代码中。
基本上,我想制定"buy X get X free",所以当给定情况时,它会输出最佳购买选项。例如,如果我想购买其中的 13 个,它将输出“11”。
the quantity we need: we only need to buy: what we end up having:
1 1 1
2 2 2
3 3 3
4 4 5
5 4 5
6 5 6
7 6 7
8 7 8
9 8 10
10 8 10
11 9 11
12 10 12
13 11 13
14 12 15
15 12 15
. . .
. . .
. . .
这很简单:您想知道有多少个完整包,以及您需要获得多少个非包项目。积分除法好用
def buy_to_acquire(desired, buy=1, free=0):
pack = buy + free
buy_packs = desired // pack
buy_individual = desired % pack
return buy * buy_packs + buy_individual
buy_to_acquire(13, buy=4, free=1)
# => 11
备用版本不太容易理解,但对计算机来说速度更快:
import math
def buy_to_acquire(desired, buy=1, free=0):
return math.ceil(desired * buy / (buy + free))
在买一送一的情况下,计算起来很简单,只要除以2就是我们想要的数量(例如:买三送三,所以我们得到六)。
但是当它变得更复杂时,比如买 4 送 1,如果我们想买 13(答案是买 11,因为你免费送 2),最好的购买选择是什么?我觉得有趣的是它很容易计算,但是放到代码里,我就迷路了。
在买 4 送 1 中,这是我发现的模式,但同样,我不知道如何将其实际放入代码中。
基本上,我想制定"buy X get X free",所以当给定情况时,它会输出最佳购买选项。例如,如果我想购买其中的 13 个,它将输出“11”。
the quantity we need: we only need to buy: what we end up having:
1 1 1
2 2 2
3 3 3
4 4 5
5 4 5
6 5 6
7 6 7
8 7 8
9 8 10
10 8 10
11 9 11
12 10 12
13 11 13
14 12 15
15 12 15
. . .
. . .
. . .
这很简单:您想知道有多少个完整包,以及您需要获得多少个非包项目。积分除法好用
def buy_to_acquire(desired, buy=1, free=0):
pack = buy + free
buy_packs = desired // pack
buy_individual = desired % pack
return buy * buy_packs + buy_individual
buy_to_acquire(13, buy=4, free=1)
# => 11
备用版本不太容易理解,但对计算机来说速度更快:
import math
def buy_to_acquire(desired, buy=1, free=0):
return math.ceil(desired * buy / (buy + free))