openjudge 一元三次方程求解(分治演算法)

2021-07-23 17:42:55 字數 872 閱讀 5795

一元三次方程求解

總時間限制: 1000ms 記憶體限制: 65536kb

描述 有形如:ax3+bx2+cx+d=0 這樣的乙個一元三次方程。

給出該方程中各項的係數(a,b,c,d 均為實數),並約定該方程存在三個不同實根(根的範圍在-100至100之間),且根與根之差的絕對值》=1。要求由小到大依次在同一行輸出這三個實根(根與根之間留有空格),並精確到小數點後2位。

輸入 一行,包含四個實數a,b,c,d,相鄰兩個數之間用單個空格隔開。

輸出 一行,包含三個實數,為該方程的三個實根,按從小到大順序排列,相鄰兩個數之間用單個空格隔開,精確到小數點後2位。

樣例輸入

1.0 -5.0 -4.0 20.0

樣例輸出

-2.00 2.00 5.00

方法一:列舉法,列舉每乙個解看是否成立。

#include

#include

#include

using namespace std;

double a,b,c,d;

int main()

}

方法二:分治法,列舉區間,看解存在於哪個區間裡,逐漸縮小區間範圍,確定解。

#include

#include

#include

using namespace std;

double a,b,c,d;

double f(double x)

int main()

printf("%.2f ",x1);}}

}

一元三次方程求解

有形如 ax 3 bx 2 cx d 0這樣的乙個一元三次方程。給出該方程中各項的係數 a,b,c,d均為實數 並約定該方程存在三個不同實根 根的範圍在 100至100之間 且根與根之差的絕對值 1。要求由小到大依次在同一行輸出這三個實根 根與根之間留有空格 並精確到小數點後2位。輸入有多行測試資料...

一元三次方程求解

問題描述 有形如 ax 3 bx 2 cx d 0 這樣的乙個一元三次方程。給出該方程中各項的係數 a,b,c,d 均為實數 並約定該方程存在三個不同實根 根的範圍在 100至100之間 且根與根之差的絕對值 1。要求三個實根。輸入格式 四個實數 a,b,c,d 輸出格式 由小到大依次在同一行輸出這...

一元三次方程求解

有形如 ax3 bx2 cx d 0 這樣的乙個一元三次方程。給出該方程中各項的係數 a,b,c,d 均為實數 並約定該方程存在三個不同實根 根的範圍在 100至100之間 且根與根之差的絕對值 1。要求由小到大依次在同一行輸出這三個實根 根與根之間留有空格 並精確到小數點後2位。輸入格式 一行,4...