一元三次方程
阿新 • • 發佈:2018-04-10
同一行 提示 int 是我 分享圖片 == include urn opened
題目描述
有形如:ax3+bx2+cx+d=0 這樣的一個一元三次方程。給出該方程中各項的系數(a,b,c,d 均為實數),並約定該方程存在三個不同實根(根的範圍在-100至100之間),且根與根之差的絕對值>=1。要求三個實根。輸入
四個實數:a,b,c,d輸出
由小到大依次在同一行輸出這三個實根(根與根之間留有空格),並精確到小數點後2位樣例輸入
1 -5 -4 20
樣例輸出
-2.00 2.00 5.00
提示
數據規模和約定
|a|,|b|,|c|,|d|<=10
#include <bits/stdc++.h> usingView Codenamespace std; double a,b,c,d; double fun(double x) { return a*x*x*x+b*x*x+c*x+d; } int main() { double x1,x2,xx; int i; cin>>a>>b>>c>>d; for(i=-100;i<=100;i++){ x1=i,x2=i+1; if(fun(x1)==0){ printf("%.2f ",x1); } elseif(fun(x1)*fun(x2)<0){ while(x2-x1>=0.001){ xx=(x1+x2)/2; if((fun(x1)*fun(xx))<=0) x2=xx; else x1=xx; } printf("%.2f ",x1); } } return 0; }
然後之所以超時那麽多次
就是我把那個xx在中間定義,反復定義然後超時了
用cin挺安全,沒啥問題
一元三次方程