有 m 个学生去旅行,晚上遇到了住房问题。已知双人房每间 a 元,三人房每间 b 元,在保证所有学生都有房间住的前提下,请你帮忙算一下他们的最小开支。
输入
第一行是一个正整数 n 代表测试案例的数量。(1 <= n <= 50)
从第二行到第 n + 1 行,每行有三个正整数 m,a,b。(1 <= m,a,b <= 1e9)
输出
针对每组案例,输出他们的最小开支,然后换行。
n = int(input())
for i in range(n):
m, a, b = map(int, input().split())
# 计算需要双人房的数量
double_room = m // 2
if m % 2 == 1:
double_room += 1
# 计算需要三人房的数量
triple_room = m // 3
# 计算总开支
total_cost = double_room * a + triple_room * b
# 如果转换为三人房的方案更优,则更新总开支
if m % 3 == 0:
cost = double_room * a + (triple_room - 1) * b + a
if cost < total_cost:
total_cost = cost
elif m % 3 == 1:
cost = double_room * a
循环打擂法试试