一道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 個實根。本題...