三分就是在二分的基础上的进一步确定区间值 先把区间分为三分 然后更新左右区间值
?
?
#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 ; }
?