Souvenir(5310)

*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 p yuan and the price for a set of souvenirs if q yuan. There's m souvenirs in one set.

There's n 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 (1T105), indicating the number of test cases. For each test case:

There's a line containing 4 integers n,m,p,q (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.
注:三種方案,全套,全單,套+單
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <iostream>
#include <algorithm>
#include <stack>
#include <set>
#include <map>
#include <string>
using namespace std;
#define pi acos(-1,0)
#define INF 2147483647
int max(int a,int b)
{
	return a>=b?a:b;
} 
int main()
{
	int n,m,p,q,t;
	int x,x1,x2,x3;
	while(scanf("%d",&t)!=EOF)
	{
		while(t--)
		{			
			scanf("%d %d %d %d",&n,&m,&p,&q);
							
			x1=p*n;
			if(n%m==0)
			x2=n/m*q;
			else
			x2=(n/m+1)*q;
			x3=n/m*q+n%m*p;
			x=min(x1,min(x2,x3));
			
			printf("%d\n",x);			
		}
	}	
	
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章