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;
}