小美正在设计美团外卖的定价信息。已知外卖定价的规则如下:
1. 每道菜有折扣价和原价。折扣价不能超过原价。
2. 订单有满元减元的优惠。当购买的菜的价格总和不小于元时,总价格可以减元。“减”的价格不能超过“满”的价格。
3. 满减优惠和折扣价是互斥的,当且仅当每个菜都选择了原价才可以触发满减。
4. 系统会自动为客户计算最低价格的方案。
请使用等价划分法设计测试用例,来测试该系统的功能。
第一行输入一个正整数,代表菜的总数。
接下来的行,每行输入两个实数和,代表每道菜的原价是,折扣价是。
最后一行输入两个实数和,代表满元可以减元。
数据中所有实数的绝对值不超过1000。
如果数据有误,则输出一行字符串"error"。
否则输出一个小数,小数点后保留2位即可。该小数代表顾客购买了全部菜各一份时,订单的总价格。
2 10 5.5 10 6.5 15 3
12.00
虽然触发了满15元减3元,但使用折扣只需要花12元,低于使用满减的价格(20-3=17),因此最终系统会为客户推荐折扣价。
2 10 5.5 10 6.5 20 10
10.00
触发满20元减10元即可。满减价优于折扣价。
2 10 10.25 10 3.5 20 4.5
error
折扣价高于原价,数据错误。
void async function () { // Write your code here const n = await readline() let arr = [] for (let i = 0; i < n; i++) { let [a, b] = (await readline()).split(' ').map(Number) if (a < b || b <= 0) { console.log("error") return } arr.push([a, b]) } const[x, y] = (await readline()).split(' ').map(Number) if (x < 0 || y <= 0 || x < y) { console.log("error") return } let m = 0, old = 0 for (let i = 0; i < n; i++) { m += arr[i][1] old += arr[i][0] } old -= old > x ? y : 0 console.log(Math.min(m, old).toFixed(2)) }()