题目:
已知函数 y = e^x+ln(x)-1,实现函数
long double solve(long double y)
{
// here
}
对于传入的y,返回x值,要求f(x)与y的误差小于1e-6,其中 0 < y < 1e10
因为0 < y < 1e10,根据函数y = e^x+ln(x)-1,可以得到x<14
寻找答案时利用二分查找,直到自己所找到的答案x对应的f(x)与y相差小于1e-6
#include <cmath>
long double solve(long double y)
{
long double x, ans;
long double bottom=0, top=14;
while(top-bottom>1e-6)
{
x = (bottom+top)/2.0;
ans = exp(x) + log(x) -1;
if(abs(y-ans)<1e-6)
return x;
if(ans>y) bottom = x;
else top = x;
}
}