D. Power play【二分卡精度】

该博客讨论了一个编程问题,涉及寻找满足等式 log_a(mid) / log_b = mid 的最小整数 mid,在精度范围内找到最接近的解。算法采用二分查找策略,递归地检查左边界和右边界,确保找到的解是最小值。
摘要由CSDN通过智能技术生成

题目链接:https://codeforces.com/gym/102780/problem/D
此题小数点精度卡在小数点后9位到11位

#include <bits/stdc++.h>

using namespace std;
long long int a,b;

long long int f(long long int l,long long int r)
{
    if(l>r) return 0;
    long long int mid=(l+r)/2;
    double x=(double)(log(mid)/log(a));
    if(abs(x*b-mid)<0.00000001)
    {
       //根据题目要求,要输入最小值,所以我们在找到一个值的时候要检验是否还有比它更小的值,如果有的话,就return更小的值
       long long int ans=0;
       ans=f(1,mid-1);
       if(ans) return ans;
       return mid;
    }
    if(x*b<mid)
    {
        return f(l,mid-1);
    }
    return f(mid+1,r);
}
int main()
{
    cin>>a>>b;
    printf("%lld\n",f(1,1e18));
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值