本期题目:网上商城优惠活动
题目
- 背景 某网上商城举办优惠活动,发布了满减、打折、无门槛 3 种优惠券,分别为:
- 每满
100
元优惠10
元,无使用数限制,如100~199
元可以使用1
张减10
元,200~299
可使用2
张减20
元,以此类推; 92
折券,1
次限使用1
张,如100
元,则优惠后为92
元;- 无门槛
5
元优惠券,无使用数限制,直接减5
元。
- 每满
- 优惠券使用限制 每次最多使用
2
种优惠券,2
种优惠可以叠加(优惠叠加时以优惠后的价格计算), 以购物200元
为例,可以先用92
折券优惠到184元
,再用1
张满减券优惠10元
,最终价格是174元
, 也可以用满减券2
张优惠20元
为180元
,再使用92
折券优惠到165
(165.6 向下取整)元, 不同使用顺序的优惠价格不同,以最优惠价格为准。 在一次购物中,同一类型优惠券使用多张时必须一次性使用, 不能分多次拆开穿插使用(不允许先使用 1 张满减券,再用打折券,再使用一张满减券)。 - 问题 请设计实现一种解决方法,帮助购物者以最少的优惠券获得最优的优惠价格。 优惠后价格越低越好,同等优惠价格,使用的优惠券越少越好,可以允许某次购物不使用优惠券。
- 约定 优惠活动每人只能参加一次,每个人的优惠券种类和数量是一样的。
输入
第一行:每个人拥有的优惠券数量(数量取值范围为[0, 10]
),按满减、打折、无门槛的顺序输入。 第二行:表示购物的人数n(1 <= n <= 10000)
。
最后 n 行:每一行表示某个人优惠前的购物总价格(价格取值范围(0, 1000]
,都为整数)。
约定:输入都是符合题目设定的要求的。
输出
每行输出每个人每次购物优惠后的最低价格以及使用的优惠券总数量,每行的输出顺序和输入的顺序保持一致。
备注
- 优惠券数量都为整数,取值范围为
[0, 10]
。 - 购物人数为整数,取值范围为
[1, 10000]
。 - 优惠券的购物总价为整数,取值范围为
(0, 1000]
。 - 优惠后价格如果是小数,则向下取整,输出都为整数。