【背景】
某网上商城举办优惠活动,发布了满减、打折、无门槛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])))

【网上商城优惠活动】相关推荐

  1. 【华为OD机试真题2023 JAVA】网上商城优惠活动(一)

    华为OD机试真题,2023年度机试题库全覆盖,刷题指南点这里 网上商城优惠活动(一) 时间限制:1s 空间限制:50MB 限定语言:不限 题目描述: [背景] 某网上商城举办优惠活动,发布了满减.打折 ...

  2. 【华为OD机试真题】网上商城优惠活动(python版)100%通过率 超详细代码注释 代码解读

    [华为OD机试真题 2022&2023]真题目录 @点这里@ [华为OD机试真题]信号发射和接收 &试读& @点这里@ [华为OD机试真题]租车骑绿道 &试读& ...

  3. 华为OD机试真题-网上商城优惠活动(一)【2023Q1】【JAVA、Python、C++】

    题目描述: [背景] 某网上商城举办优惠活动,发布了满减.打折.无门槛3种优惠券,分别为: 1.每满100元优惠10元,无使用数限制,如100~199元可以使用1张减10元,200~299可使用2张减 ...

  4. 【华为OD机试 2023最新 】 网上商城优惠活动(C++)

    文章目录 题目描述 输入描述 输出描述 备注 用例 题目解析 C++ 题目描述 某网上商场举办优惠活动,发布了满减.打折.无门槛3种优惠券,分别为: 每满100元优惠10元,无使用数限制,如10019 ...

  5. 华为OD机试 - 网上商城优惠活动(Java JS Python)

    题目描述 某网上商场举办优惠活动,发布了满减.打折.无门槛3种优惠券,分别为: 每满100元优惠10元,无使用数限制,如100~199元可以使用1张减10元,200~299可使用2张减20元,以此类推 ...

  6. 【华为OD】| 网上商城优惠活动_逻辑分析

    目录 一.

  7. 华为OD机试真题Java_2022-2023-题目0188-网上商城优惠活动(一)

    网上商城优惠活动(一) 题目描述 背景 某网上商城举办优惠活动,发布了满减.打折.无门槛3种优惠券,分别为: 每满100元优惠10元,无使用数限制,如100~199元可以使用1张减10元,200~29 ...

  8. Java+Springboot+Mybatis+Mysql+Bootstrap+Maven实现网上商城系统

    网上商城系统 一.系统介绍 1.软件环境 2.功能模块图 3.系统功能 4.数据库表 5.SQL语句 6.工程截图 二.系统展示 1.用户-浏览商品 2.用户-注册 3.用户-登录 4.用户-购物车管 ...

  9. 三星网上商城星享6.18钜惠即将开启,高品质电视助力焕新生活

    6.18购物节即将到来,想换台称心电视的朋友注意了,三星网上商城"焕新生活,品质之选"活动将于6月1日开启,选购三星QN900A系列.三星QN85A系列.三星The Serif画境 ...

最新文章

  1. 为什么 JavaScript 的私有属性使用 # 符号
  2. wxpython应用程序对象与顶级窗口_wxPython 基础 | 学步园
  3. windows 10 的安装说明
  4. Microsfot.Web.UI.WebControls.TreeView JavaScript控制方法研究(转)
  5. 存储过程中同一语句多个聚合函数时 into 用法
  6. jquery 遍历java对象的属性_用jquery each标签遍历java list对象
  7. 新入驻博客园立一个flag
  8. SQL Server 常用分页SQL
  9. 计算机网络与通信的课程报告,计算机网络与通信课程设计报告.doc
  10. 项目Beta冲刺 随笔集合
  11. emacs(考场+平时)配置方案
  12. mariadb 卸载 Kali_Adobe官方卸载工具软件安装教程
  13. 为什么现在不看好 CV 方向了呢?
  14. oracle10g--使用expdp导出数据和impdp导入数据
  15. 10年攒一百万回老家一个月6千利息,现实么
  16. 两两组合工具之itertools
  17. android.265g.com.,小米3s流产?小米3下一代机型为小米x4?
  18. 怎么让在线视频播放html,HTML5网页视频强制变速倍速播放
  19. 伪类选择器和伪元素选择器
  20. IDEA安装教程(图文详解,一步搞定)

热门文章

  1. 通信算法之六十:SC_FDE系统的物理层算法设计与工程实现
  2. iOS通讯录复制的手机号码字符串多了奇怪的unicode码\u0000202d-\u0000202c
  3. 健康管理项目第九天(套餐预约之占比饼形图、运营数据统计、报表导出 )
  4. 利用Python实现模糊查找
  5. android+imei+为null,适合Android7.0以上(到9.0)系统,获取 关于手机--状态信息 (如:MAC,IMEI,IMSI,ICCID)...
  6. id Software公司介绍
  7. drawCircle方法:绘制圆形
  8. 删除按升序排列的单链表中的重复元素
  9. 台式机,在不能连网线的情况下,如何连接WiFi呢?
  10. 苹果联合创始人Steve Wozniak:有点担心苹果的未来