1024 一元三次方程
我记得这个题是一个二分,我当时调了很长时间的
首先给定一个一元三次方程,然后给出abcd等系数,三次项二次项一次项常数
就然后让你求解三个不同的实数根
记f(x)=0 存在x1 x2 且 x1<x2 f(x1)* f(x2)<0所以 x1 x2之间就有一个解
#include<iostream>
#include<string>
#include<cstdio>
#define dd double
using namespace std;
double a,b,c,d;
double tou,wei;
double x1,x2;
double s;
double mid;
double f(double x);
int main()
{
cin>>a>>b>>c>>d;
for(int i=-100;i<=100;i++)
{
tou=i;
wei=i+1;
x1=f(tou);
x2=f(wei);
if(x1==0)//找到解
{
printf("%.2lf ",tou);
s++;//解的数量,一共三个
}
if(x1*x2<0)
{
while(wei-tou>=0.000000000000001)
{
mid=(tou+wei)/2;
if(f(mid)*f(wei)<=0)
tou=mid;
else
wei=mid;
}
printf("%.2lf ",wei);
s++;
}
if(s==3) break;//找到三个解
}
return 0;
}
double f(double x)
{
return a*x*x*x+b*x*x+c*x+d;//判断是否是解
}