输入说明
1:5个空间分隔的整数a,b,c,d,e,a,b,c,d,e∈[-9,9]
行2:2空格分隔的整数x1,x2,x1,x2∈[-10,10],x1<x2
输出说明
行1:浮点数代表根,精确到小数点后10位
复制输入样例
0 2 -4 3 -6
-10 10
复制输出样例
2.0000000000
#include<iostream> using namespace std; int a,b,c,d,e;//定义全局变量,便于math函数调用 double math(double x)//计算f(x)的值 { return a*x*x*x*x b*x*x*x c*x*x d*x e; } int main(){ do scanf("%d%d%d%d%d",&a,&b,&c,&d,&e); while(a<-9||a>9||b<-9||b>9||c<-9||c>9||d<-9||d>9||e<-9||e>9); int x1,x2; do scanf("%d%d",&x1,&x2); while(x1<-10||x1>10||x2<-10||x2>10); double l=x1,r=x2;//将x1赋给l(left),将x2赋给r(right)用区间[l,r]表示 while(r-l>1e-12)//精度限制,防止误差 { double mid=(l r)/2;//求中值 if(math(mid)>=0)///判断中对应的函数值是否大于0 { if(math(l)<=0) r=mid;//当mid函数值大于0,l函数值小于或等于0时间间隔的右边界mid else l=mid; } else { if(math(l)<=0) l=mid; else r=mid; } } if(math(l)==0) printf("%.10lf\n",l); else printf("%.10lf\n",l); return 0; }