在小慕负责的魔法商店里,有一套神奇的金币收银系统,专门用来处理顾客的付款和找零。收银台由小慕精心设计,能够自动完成金币的交易与找零。每种面额的金币都蕴含着不同的魔法力量,而小慕需要设计一个魔法金币收银台系统来管理整个交易流程。 给定两个输入参数: 1. :一个列表,表示商店收银台初始拥有的金币数量。金币的面额为 `1卢比`、`5卢比`、`10卢比`、`50卢比` 和 `100卢比`,每种金币面额有对应的数量。 2. payments:一个列表,包含若干次交易。每次交易由两个部分组成:商品价格 `price` 和顾客支付的每种面额金币的数量 `paidGolds`。 规则: - 如果顾客支付的金币比商品价格少,交易失败,商店不会接受顾客的金币。返回 `[-1]`。 - 如果顾客支付的金币与商品价格正好相等,商店接受顾客的付款,并更新收银台的金币数量。 - 如果顾客支付的金币超过商品价格,商店需要找零: - 如果找不开零,交易失败,商店不会接受顾客的金币。返回 `[-2]`。 - 如果能够找零,商店按照来找零,并更新收银台的金币数量。 - 请注意,找零时,商店应先接受顾客的金币后,。
提示:带虚线的词点一下有通俗解释。
输入描述
1. 第一行:一个整数 `Q`,表示交易次数。 2. 对于每次交易: - 第一行:一个字符串,表示命令 `"MagicCashRegister"`,表示初始化收银台系统。 - 第二行:一个包含商店收银台初始金币数量的列表,按顺序包含 `1卢比`、`5卢比`、`10卢比`、`50卢比` 和 `100卢比` 面额的金币数量。 - 接下来 `Q` 行:每行包含两个部分: - `price`:商品价格,整数。 - `paidGolds`:顾客支付的金币数量,以一个列表形式给出,按顺序包含 `1卢比`、`5卢比`、`10卢比`、`50卢比` 和 `100卢比` 面额的金币数量。
输出描述
- 对于每次交易: - 如果交易成功,输出一个长度为5的数组,表示找零的金币数量,按顺序包含 `1卢比`、`5卢比`、`10卢比`、`50卢比` 和 `100卢比` 面额的金币数量。 - 如果交易失败: - 输出 `[-1]`:表示顾客支付的金币少于商品价格。 - 输出 `[-2]`:表示商店无法找零。 - 在初始化系统时,返回 `"null"`。
示例
示例 1
输入
6 MagicCashRegister 0 0 0 0 0 processTransaction 20 2 1 0 0 1 processTransaction 10 2 1 0 0 0 processTransaction 15 0 1 2 0 0 processTransaction 40 10 0 1 1 0 processTransaction 68 2 2 2 2 0
输出
null -2 -1 0 0 1 0 0 5 1 2 0 0 4 0 1 1 0
说明:1. **初始化收银台系统**:商店初始化了收银台的金币数量为 `[0, 0, 0, 0, 0]`,对应输出 `null`。 2. **第一次交易**:商品价格 `20`,顾客支付 `107`,需要找零 `87`,但商店无法找零,输出 `[-2]`。 3. **第二次交易**:商品价格 `10`,顾客支付 `7`,少于价格,输出 `[-1]`。 4. **第三次交易**:商品价格 `15`,顾客支付 `25`,找零 `10`,找零成功,输出 `[0, 0, 1, 0, 0]`。 5. **第四次交易**:商品价格 `40`,顾客支付 `70`,找零 `30`,找零成功,输出 `[5, 1, 2, 0, 0]`。 6. **第五次交易**:商品价格 `68`,顾客支付 `132`,找零 `64`,找零成功,输出 `[4, 0, 1, 1, 0]`。
时间限制 1000 ms · 内存限制 128 MB