Algorithm 计算N组总成本的算法

Algorithm 计算N组总成本的算法,algorithm,math,optimization,Algorithm,Math,Optimization,我的物品供应有限,当物品被购买时,价格会相应地以N组的形式上涨(每次购买N件物品,价格就会上涨)。当尝试购买大量物品时,计算总成本的最简单方法是什么 示例: 我有24个foo。对于购买的每N(例如使用3),价格将增加1。 因此,如果我以1的价格购买1,那么剩下23个,以1的价格购买2个。 购买1后,有人希望购买6。好的,总成本是=(2*1)+(3*2)+(1*3)好的,我认为现在这是正确的 鉴于: X = Total Number of Items Bought N = Number of

我的物品供应有限,当物品被购买时,价格会相应地以N组的形式上涨(每次购买N件物品,价格就会上涨)。当尝试购买大量物品时,计算总成本的最简单方法是什么

示例:
我有24个foo。对于购买的每N(例如使用3),价格将增加1。
因此,如果我以1的价格购买1,那么剩下23个,以1的价格购买2个。

购买1后,有人希望购买6。好的,总成本是=(2*1)+(3*2)+(1*3)

好的,我认为现在这是正确的


鉴于:

X  = Total Number of Items Bought
N  = Number of Items per Price Increment
B  = Base Item Price, before any Increments
I  = Price Increment per [N]
设置:

然后:


好的,我认为这是正确的


鉴于:

X  = Total Number of Items Bought
N  = Number of Items per Price Increment
B  = Base Item Price, before any Increments
I  = Price Increment per [N]
设置:

然后:


借用Rbaryyoung的符号,前N个项目各花费B,第二N个项目各花费B+I,第三N个项目各花费B+2*I,以此类推

购买X件物品:Q:=X部门N(楼层划分)购买整组物品,加上R:=X模块N额外物品。前者的成本Q*N*(B+(B+(Q-1)*I))/2,因为随着项目成本的线性增加,平均项目成本等于第一个项目成本B和最后一个项目成本B+(Q-1)*I的平均值。后者的项目成本R*(B+Q*I),因此得到的函数f(X)为


要计算从X包含到X'排除的索引项目(零-)的成本,请使用
f(X')-f(X)

借用Rbaryyoung的符号,前N个项目各成本B,第二N个项目各成本B+I,第三N个项目各成本B+2*I,以此类推

购买X件物品:Q:=X部门N(楼层划分)购买整组物品,加上R:=X模块N额外物品。前者的成本Q*N*(B+(B+(Q-1)*I))/2,因为随着项目成本的线性增加,平均项目成本等于第一个项目成本B和最后一个项目成本B+(Q-1)*I的平均值。后者的项目成本R*(B+Q*I),因此得到的函数f(X)为



要计算从包含X到不包含X的索引项(零-)的成本,请使用
f(X')-f(X)

您到底在问什么?你的问题陈述是什么?你尝试过什么?我有一个非常低效的解决方案,我正在寻找一个更优雅的。基本上,您需要检查您从哪一组N购买,以及它的成本是多少。如果您的选择与分组大小相同或小于分组,那么这很简单,但如果选择越大,那么它就越复杂。您可能应该指定具体的输入(可能是总共的
foo
s数量、要购买的物品数量、
N
、初始价格)。您到底在问什么?你的问题陈述是什么?你尝试过什么?我有一个非常低效的解决方案,我正在寻找一个更优雅的。基本上,您需要检查您从哪一组N购买,以及它的成本是多少。如果您的选择与分组的大小相同或更小,那么这很简单,但是如果选择的大小变大,那么它会变得更复杂。您可能应该指定具体的输入(可能是总共的
foo
s个数,要购买的项目数,
N
,初始价格)。这很好,但是,它似乎是从最高价格开始购买的。必须先购买所有低价物品,然后才能以更高的价格购买。此外,如果X项目的数量已经从总量中购买(因此,从一个分组中开始,以不同的价格比基准价格),那么这个帐户将如何解释?从新采购总额的总成本中减去之前采购总额的总成本。噢,糟了。谢谢你指出这一点。我想我想这个问题想得太久了。@Fusion89k新公式应该首先正确地累加最低值。正如大卫·艾森斯塔所说,从中间开始计算,只需减去前面的总数。是的,完美。谢谢这是伟大的,但它似乎是从最高的价格购买第一。必须先购买所有低价物品,然后才能以更高的价格购买。此外,如果X项目的数量已经从总量中购买(因此,从一个分组中开始,以不同的价格比基准价格),那么这个帐户将如何解释?从新采购总额的总成本中减去之前采购总额的总成本。噢,糟了。谢谢你指出这一点。我想我想这个问题想得太久了。@Fusion89k新公式应该首先正确地累加最低值。正如大卫·艾森斯塔所说,从中间开始计算,只需减去前面的总数。是的,完美。谢谢+1:我想我们都是用稍微不同的公式得到的。当我试图弄明白的时候,我正朝着这个方向走,这时我意识到我可以不用使用
MOD
函数,通过额外使用
FLOOR
结果来逃脱。+1:我想我们都是用稍微不同的公式得到的。当我试图弄明白时,我正朝着这个方向前进,这时我意识到我可以不用使用
MOD
功能,通过额外使用
FLOOR
结果逃走。
TotalCost = X*(B-I) + I*(X*J - N*J*(J-1)/2)
f(X) := (Q * N * (B + (B + (Q - 1) * I))) div 2 + R * (B + Q*I).