Gym - 104077C

文章描述了一个关于计算问题的数学模型,涉及Ranran如何利用克隆和准备问题的方式,以最高效能准备一场由c个问题组成的竞赛。通过算法分析,找出在给定时间和能力限制下,最小化所需时间的方法。
摘要由CSDN通过智能技术生成

Ranran 需要准备一场竞赛!竞赛由 c 个问题组成,Ranran 可以做以下两件事之一:

  1. 在 a 分钟内克隆自己。也就是说,a 分钟后,将会有一个额外的 Ranran。
  2. 在 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;
}

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值