洛谷 1024一元三次方程

2021-10-05 20:55:17 字數 910 閱讀 3843

一道noip上古時代的聯賽題,題目描述(我翻譯的精簡版…):

存在方程 f(x)=ax^3+bsquare(x)+cx+d=0, 已知有三個實數根在範圍-100與100之內,解與解的差至少為1,請你求出這三個實數解,精確到小數點後2位。

先給出洛谷很多同學的標準解法:因為解與解的差至少為1,那麼我們應該對於-100到100內所有為1的區間進行二分答案,直到我們找到三個解為止。

我的做法:對於-100 到 100這個區間進行切片,列舉切片的位置,那麼必然存在三個區間包含了三個答案,對這三個區間進行二分,直到找到三個答案為止。

感覺自己這個做法很冒險,不清楚是否正確性充分,但是還是給出參考**

#include #include #include using namespace std;

double a, b, c, d;

double ans[505];

int cnt;

double pow(double x, int ex)

return ret;

}double func(double x)

double bsearch(double left,double right)

if(func(right)==0&&func(left)!=0)

if(func(right)==0&&func(left)==0)

if(left>right-0.001)

double mid = (left+right)/2;

return min(bsearch(left,mid),bsearch(mid,right));

}int main()

if(i==2)

if(i==3)

}cout

}}}

一元三次方程求解 洛谷P1024

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

洛谷 P1024 一元三次方程求解

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

洛谷題解 P1024 一元三次方程求解

洛谷,我的 oj,有形如 一行,4 個實數 a,b,c,d。一行,3 個實根,並精確到小數點後 2 位。1 5 4 20 2.00 2.00 5.00給了乙個特殊的一元三次方程,該方程在 100,100 之間存在 3 個不同的實根,而且實根之間差的絕對值大於等於 1。要求我們求出這 3 個實根。本題...