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.
题解:题意为要坐n趟地铁,有一种是每一趟花a元,另一种是m趟花b元,问最小花费。
1. 判断 a*m<b , 最小花费为 n*a,否则 先算出 n 趟中有多少 m趟, x = n/m; 余下 c 趟 c=n%m。 min = x*b;
2.判断 余下的c趟所花费的钱,如果 b<c*a; min += b; 否则 min+=c*a;
AC code:
/**
* @(#)Travel.java
*
*
*
* @version 1.00 2014/9/13
*/
import java.util.*;
public class Travel {
public static void main(String[] args) {
int n,m,a,b,min=0;
Scanner cin = new Scanner(System.in);
n = cin.nextInt();
m = cin.nextInt();
a = cin.nextInt();
b = cin.nextInt();
if(a*m<=b)
{
min = a*n;
}
else
{
int x = n/m;
min +=x*b;
int c = n-x*m;
if(b<=a*c)
{
min+=b;
}else
{
min+=a*c;
}
}
System.out.println (min);
}
}