1238:一元三次方程求解
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                1238:一元三次方程求解
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                ?
【題目描述】
形如:ax3+bx2+cx+d=0
這樣的一個(gè)一元三次方程。
給出該方程中各項(xiàng)的系數(shù)(a,b,c,d
均為實(shí)數(shù)),并約定該方程存在三個(gè)不同實(shí)根(根的范圍在?100至100之間),且根與根之差的絕對(duì)值≥1。要求由小到大依次在同一行輸出這三個(gè)實(shí)根(根與根之間留有空格),并精確到小數(shù)點(diǎn)后2
位。
【輸入】
一行,包含四個(gè)實(shí)數(shù)a,b,c,d
,相鄰兩個(gè)數(shù)之間用單個(gè)空格隔開。
【輸出】
一行,包含三個(gè)實(shí)數(shù),為該方程的三個(gè)實(shí)根,按從小到大順序排列,相鄰兩個(gè)數(shù)之間用單個(gè)空格隔開,精確到小數(shù)點(diǎn)后2
位。
【輸入樣例】
1.0 -5.0 -4.0 20.0【輸出樣例】
-2.00 2.00 5.00 #include <iostream> #include <cstdio> #include <vector> #include <queue> #include <algorithm> #include <cstring> #include <string> #include <cmath> #include <map> #include <cstdlib> #define sf(a) scanf("%d\n",&a) #define pf(a) printf("%.2lf ",a) #define e 1e-8 #define ms(a) memset(a,0,sizeof a) #define rep(a,b,c) for(a=b;a<=c;a++) using namespace std; typedef long long ll; typedef unsigned long long ull; const int inf=0x3f3f3f3f; const int idata=5e4+5; int n,ans,t,k; char *ch; int *step; int cnt; int temp[idata]; priority_queue< int,vector<int>,greater<int> >q; pair<int,int>p[idata]; double a,b,c,d;double f(double x) {return a*x*x*x+b*x*x+c*x+d; } int main() {while(cin>>a>>b>>c>>d){double x1,x2;for(int i=-100;i<=100;i++){x1=i,x2=i+1;if(f(x1)==0) pf(x1);else if(f(x1)*f(x2)<0){double mid;while(x2-x1>=0.001){mid=(x1+x2)/2;if(f(mid)*f(x1)<=0){x2=mid;}else{x1=mid;}}pf(mid);}}puts("");} }?
總結(jié)
以上是生活随笔為你收集整理的1238:一元三次方程求解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 2013 2014 2015 2016
- 下一篇: MY-JAVA
