写了一个解方程的二分代码
#include<bits/stdc++.h>
using namespace std;
double mid,l,r;
int y;
double cheack(int x)
{
return (2*pow(x,5)+7*pow(x,3)+100)*1.0;
}
double ef()
{
l=-1000000000.0,r=1000000000.0;
while(l<=r)
{
mid=(l+r)*1.0/2;
double ans=cheack(mid);
if(ans==y){return mid;}
if(ans<y){l=mid+0.0001;}
if(ans>y){r=mid-0.0001;}
}
}
int main(){
cin>>y;
printf("%.4f",ef());
return 0;
}
为什么输出是1.#QNB?
当输入100时输出0.000