0

オブジェクトの供給には限りがあり、オブジェクトが購入されると、それに応じて N 個のグループで価格が上がります (N 個のオブジェクトが購入されるたびに価格が上がります)。多数のオブジェクトを購入しようとする場合、総コストを計算する最も簡単な方法は何ですか?

例:
私は 24 foo を持っています。購入される N (例では 3 を使用) ごとに、価格は 1 ずつ増加します。
したがって、1 の価格で 1 を購入すると、23 個が残り、1 の価格で 2 個が残ります。1 個
が購入された後、誰かが希望します。 6. 総費用は = (2*1)+(3*2)+(1*3) となります。

4

2 に答える 2

2

RBarryYoung の表記法を借りると、最初の N 個のアイテムはそれぞれ B のコストがかかり、2 番目の N 個のアイテムはそれぞれ B + I のコストがかかり、3 番目の N 個のアイテムはそれぞれ B + 2*I のコストがかかります。

X アイテムを購入するには: Q := X div N (フロア分割) グループ全体が購入され、さらに R := X mod N の追加アイテムが購入されます。前者のコスト Q * N * (B + (B + (Q - 1) * I)) / 2。これは、アイテムのコストが直線的に増加するため、アイテムの平均コストは最初のアイテムのコスト B の平均に等しく、最後のアイテムのコスト、B + (Q - 1) * I。後者のアイテムのコストは R * (B + Q*I) であるため、結果の関数 f(X) は次のようになります。

f(X) := (Q * N * (B + (B + (Q - 1) * I))) div 2 + R * (B + Q*I).

X を含め X' を含まない範囲で (ゼロ) インデックス付けされた項目のコストを計算するには、 を使用しますf(X') - f(X)

于 2013-08-26T19:12:48.193 に答える
1

わかりました、これは今では正しいと思います...


与えられた:

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]

設定:

J  = FLOOR((X-1)/N)+1

それで:

TotalCost = X*(B-I) + I*(X*J - N*J*(J-1)/2)
于 2013-08-26T18:15:18.930 に答える