Long double


鏈接:https://ac.nowcoder.com/acm/problem/205829


牛能作為一個學霸,非常擅長解方程。
有一天,他拿到了一個方程:
xa+blnx=cx^a+blnx=cxa+blnx=c
牛能當然一下子就解出了這個方程。但他想考考聰明的你,這個方程的解的多少?

輸入描述:

三個正整數 

輸出描述:

如果解存在,請輸出方程的解x的值,若你和正確答案的誤差不超過 10−710^{-7}107 ,則認為你的答案正確。
如果解不存在,則輸出
示例1

輸入

復制
3 5 1

輸出

復制
1.00000000000000


首先當題目中說了誤差不超過某個范圍,就是在提示,用二分做
while(r-l>x) x為誤差范圍
同時這道題需要比double更高的高精度,所以采用long double
輸出printf("%.7Lf",ans);

#include<bits/stdc++.h>
using namespace std;
long double esp=1e-7;
int a,b,c;
int main()
{
    cin>>a>>b>>c;
    long double l=1;
    long double r=1e9;
    long double mid;
    while(r-l>esp){
        mid=(l+r)/2;
        if(pow(mid,a)+b*log(mid)>c){
            r=mid;
        }
        else l=mid;
    }
    printf("%.9Lf",mid);
}

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM