1. 程式人生 > 實用技巧 >P1024 一元三次方程求解

P1024 一元三次方程求解

採用分治思想

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
double a,b,c,d;
double f(double x)
{
    return a*pow(x,3)+b*pow(x,2)+c*x+d;
}
int main()
{
    int s=0;
    scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
    double i,j;
    for(i=-100; i<=100
; i++) { j=i+1; if(f(i)==0) { if(s) { printf(" "); } s++; printf("%.2lf",i); } if(f(i)*f(j)<0) { double l,r,mid; l=i;r=j; while(r-l>=0.001
) { mid=(l+r)/2; if(f(mid)*f(l)<0) { r=mid; } else { l=mid; } } if(s) { printf(" "); } s
++; printf("%.2lf",r); } } }