#include<bits/stdc++.h>
using namespace std;
double f(double x)
{double sum=8*pow(x,4)+7*pow(x,3)+2*pow(x,2)+3*x+6;
return sum;
}
int main()
{
int T;
double m;
cin>>T;
while(T--)
{
cin>>m;
if(f(0)<=m&&f(100)>=m)
{
double middle;
double head=0;
double tail=100;
double ans;
while(tail-head>=1e-9)
{
middle=(head+tail)/2;
ans=f(middle);
if(ans>m)
{
tail=middle-1e-9;
}
else
{
head=middle+1e-9;
}
}
printf("%.4f\n",(head+tail)*1.0/2);
}
else
{
cout<<"No solution!"<<endl;
}
}
}
给定方程 8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y,请计算x在[0,100]范围内的解。(就这个)
看起来很水是不是?
初级二分是很水滴~~~
二分思路:对半分,比较,看看在哪一半,然后再搜索(可以再来几遍二分)