【网上商城优惠活动】
创始人
2025-05-29 13:04:02
0

【背景】
某网上商城举办优惠活动,发布了满减、打折、无门槛3 种优惠券,分别为:
1.每满100 元优惠10 元,无使用数限制,如100~199 元可以使用1 张减10 元,200~299 可使用2 张减20 元,以此类推;
2.92 折券,1 次限使用1 张,如100 元,则优惠后为92 元;
3.无门槛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],都为整数)。
约定:输入都是符合题目设定的要求的。
输出描述
每行输出每个人每次购物优惠后的最低价格以及使用的优惠券总数量,每行的输出顺序和
输入的顺序保持一致。

 

import math
m,d,w = map(int,input().split())
n = int(input())
prices = [int(input()) for i in range(n)]#定义满减
def manJian(price,m):'需要判断是否执行满减'maxCount = price//100#理论上最多满减券,实际数量可能小于这个count = min(m,maxCount)#实际能用的满减券price -= count * 10m -= countreturn price,mdef daZhe(price,d):if d >= 1:price = math.floor(price*0.92)return price,d-1def wuMenKan(price,w):while  price > 0 and w > 0:price -= 5price = max(0,price)#价格最少为0,不能为负数w -= 1return price,wfor price in prices:ret = []resM = manJian(price, m)  # 先满减resMN_N = daZhe(resM[0], d)  # 满减后打折ret.append((resMN_N[0], m + d - (resM[1] + resMN_N[1])))  # m + n 是满减后打折方式的总券数量, resM[1] + resMN_N[1] 是满减券剩余数+打折券剩余数resMK_K = wuMenKan(resM[0], w)  # 满减后无门槛ret.append((resMK_K[0], m + w - (resM[1] + resMK_K[1])))resN = daZhe(price, d)  # 先打折resNM_M = manJian(resN[0], m)  # 打折后满减ret.append((resNM_M[0], d + m - (resN[1] + resNM_M[1])))resNK_K = wuMenKan(resN[0], w)  # 打折后无门槛ret.append((resNK_K[0], d + w - (resN[1] + resNK_K[1])))'''先用无门槛后打折(x-5y)*0.92 = x*0.92 - 5*0.92*y先打折后用无门槛 x*0.92 - 5y对比可以看出,先92折,再无门槛最优惠,因此可以直接排除即先无门槛的情况。'''# 对ans进行排序,排序规则是:优先按剩余总价升序,如果剩余总价相同,则再按“使用掉的券数量”升序ret.sort(key=lambda x: (x[0], x[1]))#print(ret)print(" ".join(map(str, ret[0])))

相关内容

热门资讯

日媒曝光:日本曾制定3套“夺岛... 据央视新闻报道,随着日本首相高市早苗涉台挑衅言论持续发酵,日本自卫队在靠近台海的岛屿加强军力部署的情...
舞蹈家黄豆豆获破格提拔,已任副... 今年4月拟破格提拔的舞蹈家黄豆豆,已有新消息。 澎湃新闻注意到,中国舞蹈家协会官网近日更新后显示,黄...
李霄鹏告别青岛海牛:战术调整与... 随着2023赛季的落幕,李霄鹏教练组已正式与青岛海牛球员告别,确认下赛季将不再继续执教。这一决定不仅...
高市早苗狠话说早了,美国国会:... 日本首相高市早苗发表的“若台海有事,日本就可行使集体自卫权”的言论,完全就是刻意放狠话,对华发出战争...
法律顾问能处理保险法律事务吗 在当今复杂的商业和法律环境中,保险法律事务对于企业和个人都至关重要。许多人会疑惑,法律顾问是否有能力...
海南国际清算所:依托海南自贸港... 编者按 随着我国多层次的商品市场体系持续完善,场外衍生品市场发展加速推进,其服务实体经济的核心价值正...
威少21+6+11约基奇空砍4... 【搜狐体育战报】北京时间11月23日NBA常规赛,客场作战的国王以128-123击败掘金。威斯布鲁克...
跨境电商高发!多部门共织“天罗... 东方网11月23日消息:11月21日,上海市人民检察院第三分院与上海海关缉私局、上海海警局、上海市第...
法律顾问能处理旅游法律事务吗 在旅游行业蓬勃发展的当下,各类旅游法律事务也日益增多,许多人会疑惑法律顾问是否能处理旅游法律事务。答...
法律顾问能处理哪些法律事务 在当今复杂多变的商业环境中,企业面临着各种各样的法律风险和挑战,法律顾问的重要性日益凸显。那么,法律...