鏈接:https://ac.nowcoder.com/acm/problem/205829
牛能作為一個學霸,非常擅長解方程。
有一天,他拿到了一個方程:
xa+blnx=cx^a+blnx=cxa+blnx=c
牛能當然一下子就解出了這個方程。但他想考考聰明的你,這個方程的解的多少?
牛能當然一下子就解出了這個方程。但他想考考聰明的你,這個方程的解的多少?
輸入描述:
三個正整數


輸出描述:
如果解存在,請輸出方程的解x的值,若你和正確答案的誤差不超過 10−710^{-7}10−7 ,則認為你的答案正確。
如果解不存在,則輸出
。
示例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); }
