二分-D - あなたはこの方程式を解くことはできますか?

D - あなたはこの方程式を解くことはできますか?

今、あなたが0と100の間に、その解決策を見つけることができ、式8 * X ^ 4 + 7 * X ^ 3 + 2 * X ^ 2 + 3 * X + 6 == Y所与。
今、あなたの幸運を試してみてください。

入力のInputThe最初の行は、テストケースの数を意味する整数Tを(1 <= T <= 100)を含みます。次いで、Tラインは、次の各ラインは実数Y(ファブ(Y)を<= 1E10)を有し、各テストケースOutputFor、あなたべきちょうど出力方程式の解である1つの実数値(小数点以下4桁の精度まで)、 、または「いいえ解決しない!」、0と100.Sample入力間の方程式の解がない場合

2 
100 
-4

サンプル出力

1.6152
No solution!

 

 

 

 

 

1の#include <iostreamの>
 2の#include <cmath>
 3  使用して 名前空間をSTD。
4  
5  ダブル F(ダブルX){
 6      リターン8 * POW(X、4)+ 7 * POW(x、3)+ 2 * POW(X、2)+ 3 * X + 6 )。
7  }
 8  
9  のint main()の
 10  {
 11      のint T。
12      ダブルM、N。
13      のscanf("%D "& T);
 14      ながら(t-- ){
 15          のscanf(" %のLF 、&M)、
 16          であれば(F(0)> M || F(100)< M){
 17              のprintf(" いいえ溶液\ N!" );
 18は             継続しない;
 19          }
 20          二重左= 0、右= 100 、ミッドを、
 21          ながら(ファブ(F(MID)-m)> 1E- 5 ){
 22             半ば=(右+左)/ 2 23              もし右=((F(MID)> M))ミッド。    
24               他の 場合(F(MID)<m)が左= 半ばと、
25          }
 26          のprintf(" %.4lf \ n " 、MID)。
27      }
 28      リターン 0 29 }

おすすめ

転載: www.cnblogs.com/0424lrn/p/12228023.html
おすすめ