Ranran 需要准备一场竞赛!竞赛由 c 个问题组成,Ranran 可以做以下两件事之一:
- 在 a 分钟内克隆自己。也就是说,a 分钟后,将会有一个额外的 Ranran。
- 在 b 分钟内准备一个问题。也就是说,b 分钟后,将会有一个新的问题被准备好。
请注意,克隆出来的 Ranran 也可以做上述两件事。一个 Ranran 不能同时做两件事。
Ranran 希望尽可能快地准备竞赛。但是他很懒,所以他让你找出准备竞赛所需的最小分钟数。
你需要独立地回答 T 个查询。
输入
第一行包含一个整数 T(1≤T≤10^5)。
接下来的 T 行,每行包含三个整数 a、b 和 c(1≤a, b, c≤10^9),代表一个查询。
输出
对于每个测试用例,输出一行包含一个整数,表示答案。
5
1 1 1
2 3 3
9 9 9
3 26 47
1064 822 1048576
#include <stdio.h>
#include <algorithm>
#include "cmath"
#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
void solve()
{
ll a,b,c,r=1,minn=1e15;//最小值初始化要大一点
scanf("%lld%lld%lld",&a,&b,&c);
for(int i=0;i<=32;i++)//克隆i次
{
int k=c/r;
if(k!=c*1.0/r)
k=k+1;
minn=min(minn,i*a+k*b);//更新答案
r*=2;
}
printf("%lld\n",minn);
}
int main()
{
int t;
scanf("%d",&t);
while(t--) solve();
return 0;
}