容易发现左边的那个函数一定单调递增。
当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; }