三分就是在二分的基礎上的進一步確定區間值 先把區間分為三分 然後更新左右區間值
#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; }