BestCoder 1st Anniversary ($) 1001 Souvenir

Souvenir

 
 Accepts: 901
 
 Submissions: 2743
 Time Limit: 2000/1000 MS (Java/Others)
 
 Memory Limit: 262144/262144 K (Java/Others)
Problem Description

Today is the 1st anniversary of BestCoder. Soda, the contest manager, wants to buy a souvenir for each contestant. You can buy the souvenir one by one or set by set in the shop. The price for a souvenir is pp yuan and the price for a set of souvenirs if qq yuan. There's mm souvenirs in one set.

There's nn contestants in the contest today. Soda wants to know the minimum cost needed to buy a souvenir for each contestant.

Input

There are multiple test cases. The first line of input contains an integer T(1 \le T \le 10^5)(1T105​​), indicating the number of test cases. For each test case:

There's a line containing 4 integers n, m, p, qn,m,p,(1 \le n, m, p, q \le 10^4)(1n,m,p,q104​​).

Output

For each test case, output the minimum cost needed.

Sample Input
2
1 2 2 1
1 2 3 4
Sample Output
1
3
Hint
For the first case, Soda can use 1 yuan to buy a set of 2 souvenirs. For the second case, Soda can use 3 yuan to buy a souvenir.
 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <algorithm>
 4 using namespace std;
 5 int main()
 6 {
 7     int T,n,m,p,q,i,j,k;
 8     scanf("%d",&T);
 9     while(T--)
10     {
11         scanf("%d %d %d %d",&n,&m,&p,&q);
12         if((double) p<= (double)q/m)
13         {
14             printf("%d\n",n*p);
15         }
16         else
17         {
18             int x=0;
19             for(i=1;;i++)
20             {
21                 x=x+m;
22                 if(x>=n)
23                     break;
24             }
25             printf("%d\n",min(i*q,(i-1)*q+(n-(x-m))*p));
26         }
27     }
28     return 0;
29 }
View Code

 

posted @ 2015-08-30 18:50  cyd2014  阅读(227)  评论(0编辑  收藏  举报