求助
查看原帖
求助
414231
_Fatalis_楼主2023/2/15 13:54

输出了负数 :(

个人认为在 Case1,但是没时间调了,先挂在这里 求大佬解答(现在菜到不会做结论题了

// Copyright 2023 Lotuses
#include <cmath>
#include <cstdio>
#include <cstring>
#include <vector>

#define int long long

#define eps 1e-12
#define flr(x) (int)(floor(x + eps))

signed main() {
    int T;
    read(T);
    while (T--) {
        int a, b, n, m;
        read(a, b, n, m);
        int c1 = (n - flr(1.0 * n / (m + 1))) * a;
        int c2 = n / (m + 1) * m * a + (n - flr(1.0 * n / (m + 1)) * (m + 1)) * b;
        int c3 = b * n;
        int ans = std::min(c1, std::min(c2, c3));
        printf("%lld\n", ans, c1, c2, c3);
    }
    return 0;
}

/*
1: all choose a
c = (n - floor(n / (m + 1))) * a

2: choose a for free & some b
c = a * n * m / (m + 1)      +       (n - floor(n / (m + 1)) * (m + 1)) * b

3: all choose b
c = b * n
*/
2023/2/15 13:54
加载中...