今天实验课的题,非常非常入门,纯记录自用。
题目描述:
输入n,m,a,b,要坐n次车,单程票价格a,多程票价格b,多程票可以坐m次,数据集保证n,m,a,b均为正数,现要求输出最小费用。
'''
#include <stdio.h>
void jug(int n, int m, int a, int b) {
//单程票比多程票的平均单价便宜,则一定是选择单程票
//因为单程票是已经“最细分”的了,他更便宜,则一定是全部用它
//使得每一步都是最便宜
if (b >= m* a) {
printf("%d", n * a);
return;
}
//如果是多程票均价更便宜,我们就尽量买多程票
int money = (n / m) * b;
int remaining = n % m;
//这一步判断非常关键
if (remaining > 0)
money += (b < remaining*a) ? b : remaining * a;
printf("%d", money);
}
int main() {
int n, m, a, b;
scanf("%d%d%d%d", &n, &m, &a, &b);
jug(n, m, a, b);
return 0;
}