解方程

解方程

https://ac.nowcoder.com/acm/contest/5600/G

容易发现左边的那个函数一定单调递增。
当x=1时候,函数质一定是1,
如果x小于1,函数值一定是负数,而右边的c是大于等于1的,所以其实是一定有解的
那么二分就好了。
考虑到精度问题。所以可以考虑限定次数来二分答案。。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    double  a,b,c;
    cin>>a>>b>>c;
    double l=1.0,r=1e9,mid;
    int time=1000;
    while(time--)
    {
        double ans=1;
        mid=(l+r)/2;
        for(int i=1; i<=a; i++)
        {
            ans=ans*mid;
        }
        ans+=b*log(mid);
        if(ans>c)
            r=mid;
        else
            l=mid;
    }

    printf("%.14f\n",mid);
    return 0;
}
全部评论
是不是这个题给的数据,必有解
点赞 回复 分享
发布于 2021-03-22 21:24
你好,无解的情况好像没有啊
点赞 回复 分享
发布于 2021-03-22 21:21

相关推荐

10-31 13:04
南华大学 Java
嵌入式的小白:很多面试,面试前不会去打扰cto的,但一般cto不会在这些小事上刷人,只能说这个cto比较操心,啥重要不重要,紧急不紧急的,估计都会过问,平淡看待吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务