Ann has recently started commuting by subway. We know that a one ride subway ticket costs a rubles. Besides, Ann found out that she can buy a special ticket for m rides (she can buy it several times). It costs b rubles. Ann did the math; she will need to use subway ntimes. Help Ann, tell her what is the minimum sum of money she will have to spend to make n rides?
The single line contains four space-separated integers n, m, a, b (1 ≤ n, m, a, b ≤ 1000) — the number of rides Ann has planned, the number of rides covered by the m ride ticket, the price of a one ride ticket and the price of an m ride ticket.
Print a single integer — the minimum sum in rubles that Ann will need to spend.
6 2 1 2
6
5 2 2 3
8
In the first sample one of the optimal solutions is: each time buy a one ride ticket. There are other optimal solutions. For example, buy three m ride tickets.
题解:这道题只要细心都没什么问题,主要在于最后那不满m次的车费是取单程票还是多程票,比较大小选取小的加到答案中就是最终的答案。水题不多说勒。
#include<iostream>
#include<cstdio>
using namespace std;
int n,m,a,b;
int main()
{
scanf("%d%d%d%d",&n,&m,&a,&b);
double t=a*1.0,p=(b*1.0)/m;
if (t<=p) printf("%d",n*a);
else
{
if ((n%m)*a<b) printf("%d",(n/m)*b+(n%m)*a);
else printf("%d",(n/m)*b+b);
}
return 0;
}

本文介绍了如何通过购买地铁票来最小化乘客的花费。详细解释了如何在单程票和多程票之间做出选择,以确保乘客在一定次数的乘车后花费最少。通过输入参数如计划乘车次数、多程票覆盖次数、单程票价格和多程票价格,本文提供了计算最优化票价的算法。

1250

被折叠的 条评论
为什么被折叠?



