#B. 2023.04.14-第二题-商城优惠

    Type: Default 1000ms 256MiB

2023.04.14-第二题-商城优惠

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

原题面

题目内容

塔子哥的网上商城举办优惠活动,发布了满减、打折、无门槛三种优惠券,分别为:

  1. 每满 100100 元优惠 1010 元,无使用数限制,如 100199100-199 元可以使用 11 张减 1010 元, 200299200-299 可使用 22 张减 2020 元,以此类推;
  2. 9292 折券, 11 次限使用 11 张,如 100100 元,则优惠后为 9292 元;
  3. 无门槛 55 元优惠券,无使用数限制,直接减 55 元。

每次最多使用 22 种优惠券, 22 种优惠可以叠加 (优惠叠加时以优惠后的价格计算),以购物 200200 元为例,可以先用 9292 折券优惠到 184184 元,再用 11 张满减券优惠 1010 元,最终价格是 174174 元,也可以用满减券 22 张优惠 2020 元为 180180 元,再使用 9292 折券优惠到 165165 ( 165.6165.6 向下取整)元,不同使用顺序的优惠价格不同,以最优惠价格为准。在一次购物中,同一类型优惠券使用多张时必须一次性使用,不能分多次拆开穿插使用 (不允许先使用 11 张满减券,再用打折券,再使用一张满减券) 。

塔子哥想请你设计实现一种解决方法,帮助购物者以最少的优惠券获得最优的优惠价格。优惠后价格越低越好,同等优惠价格,使用的优惠券越少越好,可以允许某次购物不使用优惠券。

优惠活动每人只能参加一次,每个人的优惠券种类和数量是一样的。

输入描述

第一行:三个整数 num1,num2,num3num1,num2,num3 ,表示每个人拥有的每种优惠券的数量,按满减、打折、无门槛的顺序输入。( 1num1,num2,num3101\le num1,num2,num3\le 10

第二行:一个整数 nn ,表示购物的人数。( 1n100001 \le n \le 10000 )

最后 nn 行:每一行一个整数 priceprice ,表示某个人优惠前的购物总价格。( 1price10001\le price \le 1000

输入都是符合题目设定的要求的。

输出描述

每行输出每个人每次购物优惠后的最低价格以及使用的优惠券总教量,每行的输出顺序和输入的顺序保持一致。

样例

输入

3 2 5
3
100
200
400

输出

65 6
155 7
338 4

样例解释

输入 33 个人,输出 33 行结果,同输入的顺序,对应每个人的优惠结果,如下:

第一行,先使用 11张满减券优惠到 9090 元,再使用 55 张无门槛券优惠 2525 元,最终价格是 6565 元,总共使用 66 张优惠券;

第二行,先使用 22 张满减券优惠到 180180 元,再使用 55 张无门槛券优惠 2525 元,最终价格是 155155 元,总共使用 77 张优惠券;

第三行,先使用 119292 折券优惠到 368368 元,再使用 33 张满减券优惠 3030 元,最终价格是 338338 元,总共使用 44 张优惠券。

题目内容(现题面)

曾经有一位叫做塔子哥的年轻人,他经营着一家网上商城。为了吸引更多的消费者,他决定举办一次优惠活动。他发布了三种优惠券:满减、打折和无门槛,让消费者可以根据自己的需要选择优惠方式。

满减券是针对购物金额的,每满 100100 元可以优惠 1010 元,没有使用次数限制,打折券可以享受 9292 折的优惠,但是每人只能使用 11 张(使用打折券以后的价格向下取整),无门槛优惠券可以直接减 55 元,没有使用次数限制。

为了让消费者能够享受到最优惠的价格,塔子哥想请你设计一种方案,使得消费者在使用最少的优惠券的情况下,可以获得最优惠的价格。如果有多种使用方案可以获得相同的价格,那么使用优惠券的数量越少越好。需要注意的是,在一次购物中,同一类型的优惠券必须一次性使用,不能分多次使用,也不能与其他类型的优惠券混用。

每个人只能参加一次活动,每个人获得的优惠券种类和数量是一样的。

输入描述

第一行:三个整数 num1,num2,num3num1,num2,num3 ,表示每个人拥有的每种优惠券的数量,按满减、打折、无门槛的顺序输入。( 1num1,num2,num3101\le num1,num2,num3\le 10

第二行:一个整数 nn ,表示购物的人数。( 1n100001 \le n \le 10000 )

最后 nn 行:每一行一个整数 priceprice ,表示某个人优惠前的购物总价格。( 1price10001\le price \le 1000

输入都是符合题目设定的要求的。

输出描述

每行输出每个人每次购物优惠后的最低价格以及使用的优惠券总教量,每行的输出顺序和输入的顺序保持一致。

样例

输入

3 2 5
3
100
200
400

输出

65 6
155 7
338 4

样例解释

输入 33 个人,输出 33 行结果,同输入的顺序,对应每个人的优惠结果,如下:

第一行,先使用 11张满减券优惠到 9090 元,再使用 55 张无门槛券优惠 2525 元,最终价格是 6565 元,总共使用 66 张优惠券;

第二行,先使用 22 张满减券优惠到 180180 元,再使用 55 张无门槛券优惠 2525 元,最终价格是 155155 元,总共使用 77 张优惠券;

第三行,先使用 119292 折券优惠到 368368 元,再使用 33 张满减券优惠 3030 元,最终价格是 338338 元,总共使用 44 张优惠券。

春招模拟赛第九场|华为od|2023.4.13.上机编程

Not Attended
Status
Done
Rule
IOI
Problem
3
Start at
2023-4-21 19:00
End at
2023-4-21 21:00
Duration
2 hour(s)
Host
Partic.
49