一元三次方程組求解 luogu P1024

2022-02-13 09:22:38 字數 852 閱讀 9881

題目傳送門

首先,要明確題目資訊,f(x1) * f(x2) < 0, 則一定存在實數根在區間(x1, x2)。且所有的根都在[-100, 100)之間。根與根的絕對值之差 >= 1

那麼,我們是否可以找到所有的x1 和 x2 呢?   當然可以。

根的取值範圍這麼小 (每乙個區間都列舉一次的話也只有200個區間),那麼我們當然就愉快的列舉啊!

在 [-100, 100)的區間裡面列舉符合條件的 x1, x2。然後再對該區間進行二分查詢(二分賽高!)

#include using

namespace

std;

#define du double du a, b, c, d;

intnow;

du ans;

inline du cac(du x)

inline

void

search(du l, du r)

du mid = l + (r - l) / 2

; du ansl, ansr;

ansl = cac(l) *cac(mid);

ansr = cac(mid) *cac(r);

if(cac(r) == 0)

if(cac(mid) == 0

)

if(ansl < 0

) search(l, mid);

//繼續二分搜尋, 注意不一定只有乙個根

else

if(ansr < 0

)search(mid, r);

return; }

intmain()

return0;

}

一元三次方程求解

有形如 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...