hdu 2899 简单三分

2015-01-26 23:12:48 · 作者: · 浏览: 6

三分就是在二分的基础上的进一步确定区间值 先把区间分为三分 然后更新左右区间值

?

?

#include
  
   
#include
   
     #include
     
     using namespace std
     ; #define exp 1e-6 
      double y
     ; double pow
     (double a
     ,int b
     ) { int i
     ; double x
     =1
     ; for(i
     =1
     ;i
     <=b
     ;i
     ++) { x
     *=a
     ; } return x
     ; } double f
     (double x
     ) { return 6
     *pow
     (x
     ,7
     )+8
     *pow
     (x
     ,6
     )+7
     *pow
     (x
     ,3
     )+5
     *pow
     (x
     ,2
     )-y
     *x
     ; ; } int main() { int T
     ,i
     ,j
     ; scanf
     ("%d"
     ,&T
     ); while(T
     --) { scanf
     ("%lf"
     ,&y
     ); double row
     =0
     ,right
     =100
     ; while(right
     -row
     >exp
     ) { double mid1
     =(2
     *row
     +right
     )/3
     ; double mid2
     =(row
     +2
     *right
     )/3
     ; if(f
     (mid1
     )>f
     (mid2
     )) row
     =mid1
     ; else right
     =mid2
     ; } printf
     ("%.4lf\n"
     ,f
     (row
     )); } return 0
     ; }
    
   
  

?