Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
136966 陈馨逸 解一元三次方程 C++ 通过 100 0 MS 248 KB 905 2024-03-09 16:30:30

Tests(6/6):


#include<bits/stdc++.h> using namespace std; double a,b,c,d,ans[5]; int total; double f(double x)//方程f(x)=a*x的三次方+b*x的二次方+c*x+d { return (a*x*x*x+b*x*x+c*x+d); } void search(double left,double right)//二分查找模板 { double mid=(left+right)/2;//从中间查找 if(left>right || total>2 || f(left)*f(right)>0 && right-left<1)return;//题目说根与根之差>=1 if(fabs(f(mid))<1e-4)//fabs()为double类型的绝对值的函数,1e-4为1乘10的负4次方(万分之一) { ans[++total]=mid; search(left,mid-1); search(mid+1,right); } else { search(left,mid); search(mid,right); } } int main() { cin>>a>>b>>c>>d;//输入 search(-100,100);//数据范围(从-100到100) sort(ans+1,ans+4);//排列3个解大小 printf("%.2lf %.2lf %.2lf",ans[1],ans[2],ans[3]);//格式化输出 return 0; }


测评信息: