HDU 5310 Souvenir
2015-09-10 11:48
190 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5310
[align=left]Problem Description[/align]
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.
[align=left]Input[/align]
There are multiple test cases. The first line of input contains an integer
T
(1≤T≤10
5
)
,
indicating the number of test cases. For each test case:
There's a line containing 4 integers n,m,p,q
(1≤n,m,p,q≤10
4
)
.
[align=left]Output[/align]
For each test case, output the minimum cost needed.
[align=left]Sample Input[/align]
[align=left]Sample Output[/align]
[align=left]Problem Description[/align]
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.
[align=left]Input[/align]
There are multiple test cases. The first line of input contains an integer
T
(1≤T≤10
5
)
,
indicating the number of test cases. For each test case:
There's a line containing 4 integers n,m,p,q
(1≤n,m,p,q≤10
4
)
.
[align=left]Output[/align]
For each test case, output the minimum cost needed.
[align=left]Sample Input[/align]
2 1 2 2 1 1 2 3 4
[align=left]Sample Output[/align]
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<iostream> using namespace std; int main() { // freopen("E:\\in.txt","r",stdin); int T; cin>>T; while(T--){ bool flag=false; int n,m,p,q; int cost=0; cin>>n>>m>>p>>q; if(m*p>q)flag=true; //set is cheaper while(n>=m){ if(flag){ n-=m; cost+=q; } else{ n-=1; cost+=p; } } if(n){ //rest need to buy if(n*p>q) cost+=q; else cost+=p*n; } cout<<cost<<endl; } return 0; }
相关文章推荐
- c++拷贝构造函数的形参为什么必须是引用类型
- hdu 2077 汉诺塔IV 递推
- opencv常见错误
- R语言做文本挖掘 Part4文本分类
- hdu 2077 汉诺塔IV 递推
- Linux中cron命令的用法详解
- LIS
- POJ 1738:An old Stone Game 石子归并(GarsiaWachs算法)
- Android官方设计常用icon以及color颜色RGB值和对应颜色效果图
- 在mac系统安装Apache Tomcat的详细步骤
- 数据库 student sc course
- MyISAM 和 InnoDB 讲解
- iPad开发中得modal介绍
- popoverController使用注意
- POJ 1738:An old Stone Game 石子归并(GarsiaWachs算法)
- 机器学习方法汇总
- 导航栏,黑线,返回按钮,相关代码设置
- Welcome to JAVA!(第二课课后练习)
- CentOS7+Mysql-5.2.26+php-5.6.12+Zabbix-2.4.6
- 个人学习笔记--linux中断下半部之软中断