需要購買 n 件商品,單價 p,套裝 m 件價格 q。求最小總花費。只有三種購買策略:
不需要考慮「先買單件再買套裝」,因為如果單件更劃算,直接全單買即可;如果套裝更劃算,優先買套裝再補單件。
int main() {
int T, n, m, p, q;
scanf("%d", &T);
while (T--) {
scanf("%d%d%d%d", &n, &m, &p, &q);
int ans1 = n * p;
int ans2 = (n % m == 0) ? (n/m) * q : (n/m + 1) * q;
int ans3 = (n/m) * q + (n%m) * p;
printf("%d\n", min(ans1, min(ans2, ans3)));
}
return 0;
}
WA 兩次原因:未考慮 `n % m == 0` 時套裝數計算邊界,且輸出格式多印空格。細節決定成敗。