书店

书店

中等

说明

为了促进一套畅销五册系列图书中不同册的销售,一家书店决定对购买多本图书提供折扣。

这五本书中,任意一本的单册售价为 $8。

不过,如果你购买两本不同的书,这两本可以享受 5% 的折扣。

如果购买 3 本不同的书,可以享受 10% 的折扣。

如果购买 4 本不同的书,可以享受 20% 的折扣。

如果 5 本全买,可以享受 25% 的折扣。

注意:如果你买了四本书,其中 3 本是不同的册,那么组成一套的那 3 本可以享受 10% 的折扣,但第四本仍然要花 $8。

你的任务是编写一段代码,计算任意一个可能出现的购物篮(只包含同一系列的书)的价格,并给出尽可能大的折扣。

例如,下面这个购物篮要花多少钱?

  • 第一本书 2 本
  • 第二本书 2 本
  • 第三本书 2 本
  • 第四本书 1 本
  • 第五本书 1 本

给这 8 本书分组的一种方式是:

  • 1 组 5 本 --> 25% 折扣(第 1、2、3、4、5 本)
  • +1 组 3 本 --> 10% 折扣(第 1、2、3 本)

这样总计为:

  • 5 本书享受 25% 的折扣
  • +3 本书享受 10% 的折扣

结果为:

  • 5 x (8 - 2.00) == 5 x 6.00 == $30.00
  • +3 x (8 - 0.80) == 3 x 7.20 == $21.60

总计 $51.60

不过,这 8 本书还有另一种分组方式:

  • 1 组 4 本 --> 20% 折扣(第 1、2、3、4 本)
  • +1 组 4 本 --> 20% 折扣(第 1、2、3、5 本)

这样总计为:

  • 4 本书享受 20% 的折扣
  • +4 本书享受 20% 的折扣

结果为:

  • 4 x (8 - 1.60) == 4 x 6.40 == $25.60
  • +4 x (8 - 1.60) == 4 x 6.40 == $25.60

总计 $51.20

而 $51.20 就是折扣最大的价格。

通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Delphi Pascal Exercism

准备好开始 书店 了吗?

注册 Exercism,借助 76 个练习 和真人导师指导,学习并掌握 Delphi Pascal,全部免费。