有 m 个学生去旅行,晚上遇到了住房问题。已知双人房每间 a 元,三人房每间 b 元,在保证所有学生都有房间住的前提下,请你计算一下他们的最小开支。

有 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

循环打擂法试试