Description
企鹅来到了海边寻找鱼群。他想摸正好 n n n千克鱼。
附近海中的鱼只有两个品种:重 1 1 1千克的小鱼和重 2 2 2千克的大鱼。海里有无限多的这两种鱼。
企鹅摸到第一种鱼要花费 a a a点体力,摸到第二种鱼要花费 b b b点体力。
企鹅想尽可能节省体力。你的任务是找出他最少需要花费多少点体力,能摸到正好nn千克鱼。
Input
第一行输入一个正整数TT,代表数据组数。
每组数据输入三个正整数n,a,b,分别表示企鹅需要多少千克鱼,摸第一种鱼消耗的体力和摸第二种鱼消耗的体力。
1
≤
T
≤
500
1 \le T \le 500
1≤T≤500
1
≤
n
≤
1
0
6
1 \le n \le 10^6
1≤n≤106
1
≤
a
,
b
≤
1000
1≤a,b≤1000
1≤a,b≤1000
Output
每组数据输出一行,表示企鹅摸n千克鱼所需要的最少体力。
Sample Input 1
4
10 1 3
7 3 2
1 1000 1
1000000 42 88
Sample Output 1
10
9
1000
42000000
题意
摸1千克的鱼需要体力a
摸2千克的鱼需要体力b
正好摸n千克的鱼需要的最少体力是多少呢?
思路
贪心选择单位体力最少的方案即可。
代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
int T;
cin>>T;
while(T--)
{
ll n;
int a,b;
cin>>n>>a>>b;
if(n==1)
{
cout<<(ll)a<<"\n";
continue;
}
if(b<a*2)
{
if(n%2==0)
cout<<b*(n/2)<<"\n";
else
cout<<b*(n/2) + a<<"\n";
}
else
{
cout<<a*n<<"\n";
}
}
}