題目傳送門
首先,要明確題目資訊,f(x1) * f(x2) < 0, 則一定存在實數根在區間(x1, x2)。且所有的根都在[-100, 100)之間。根與根的絕對值之差 >= 1
那麼,我們是否可以找到所有的x1 和 x2 呢? 當然可以。
根的取值範圍這麼小 (每乙個區間都列舉一次的話也只有200個區間),那麼我們當然就愉快的列舉啊!
在 [-100, 100)的區間裡面列舉符合條件的 x1, x2。然後再對該區間進行二分查詢(二分賽高!)
#include usingnamespace
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...