[NOIP 2001]組洛谷P 1024一元三次方程式の解を高める

2918 ワード


タイトルの説明
有形は、ax 3+bx 2+cx+d=0のような一元三次方程式である.この方程式の各係数(a,b,c,dはいずれも実数)を与え、この方程式には3つの異なる実根(根の範囲は-100から100の間)が存在し、根と根の差の絶対値>=1が規定されている.この3つの実ルート(ルートとルートの間にスペースが残っている)を小さいから大きいまで順次同じ行に出力し、小数点以下2桁まで正確にする必要があります.
ヒント:方程式f(x)=0を記し、2つの数x 1とx 2が存在し、x 1
にゅうしゅつりょくけいしき
入力形式:
 
1行、4個の実数A,B,C,D.
 
出力フォーマット:
 
1行、3つの実根を小数点以下2桁に正確にします.
 
入出力サンプル
サンプル#1を入力:
1 -5 -4 20

出力サンプル#1:
-2.00 2.00 5.00

 
実は正解は二分求値です.
でもこのデータ範囲を見てみると...ハイ!暴力を払おう!
 1 /*by SilverN*/
 2 #include
 3 #include
 4 #include
 5 #include
 6 #include
 7 using namespace std;
 8 const double eps=1e-3;
 9 double a,b,c,d;
10 int main(){
11     double i,j;
12     cin>>a>>b>>c>>d;
13     for(i=-100;i<=100;i+=0.01){
14         if( fabs(a*i*i*i+b*i*i+c*i+d)<=eps )printf("%.2f ",i);
15     }
16     return 0;
17 }

 
転載先:https://www.cnblogs.com/SilverNebula/p/5962562.html