折扣计算:
Product quantity and range
1 - 10 - 1%
11 - 20 - 2%
21 - 30 - 3%
31 - 40 - 4%
41 - 50 - 5%
以上是给出的数量范围及其折扣百分比,
for example:
each product cost is 100
if i purchase 50 product then 5% discount is 250
Now if i purchase 50 products at 2 terms let say 20 and 30 then
for 20 product 2% discount = 40
for 30 product 3% discount = 90
total discount = 130
但是我必须得到折扣250,
问题描述: 产品可以按n个条款购买最大数量,此处最大数量为50.购买产品的折扣%由上述范围给出。当添加总折扣时,它应该是相等的。在这里购买50个产品250是折扣同样250应该是总折扣,即使购买的产品为20,10,10或25,25等......
PLZ帮我计算部分,用一些公式或任何东西......
答案 0 :(得分:1)
float SimpleDiscount(float cost, int count)
{
if (count <= 0) return 0;
if (count <= 10) return 0.01f * cost;
if (count <= 20) return 0.02f * cost;
if (count <= 30) return 0.03f * cost;
if (count <= 40) return 0.04f * cost;
return 0.05f * cost; // count > 40
}
float GetDiscount(int customerId, int itemId, int count)
{
float cost = GetItemCost(itemId);
int previousCount = GetCustomerOrderedItemCount(customerId, itemId);
float previousDiscount = SimpleDiscount(cost, previousCount);
int newCount = previousCount + count;
float newDiscount = SimpleDiscount(cost, newCount);
SaveCustomerOrderedItemCount(customerId, itemId, newCount);
return newDiscount - previousDiscount;
}
例如:
Item cost = 100
For 20 items: Discount = 40 (2%)
For 30 items: Discount = 210 (7%)
Total discount = 250 (5%)
答案 1 :(得分:1)
我认为您希望折扣率随着购买商品数量的增加而增加,如果是这种情况,就无法做到这一点。
这是逻辑。基本等式是:
n 1 d 1 + n 2 d 2 + n 3 d 3 =(n 1 + n 2 + n 3 )d x
一个明显的解决方案是让所有的d相等,即所有折扣率都相同。否则,没有一般的解决方案(也就是说,没有一组d将适用于所有n种组合 - 例如,只要其中一个n都是零,那么等式两边的d'将必须是相同,所以唯一的通用解决方案是所有的d都是相同的),如果你想要一个具有不同d的特定解决方案,你可以在给定一组n的情况下求解d的正确值,但是当你这样做,很明显,如果其中一个小于d x ,另一个必须更大,所以你不能有严格的贴现率。