1、二分查找常規操作,水題。
2、求導可知導函數在[0,100]內單增,[0,100]導函數有0點爲函數先減後增,既導函數爲0時,此處函數值最小。
3、就其實我覺得可以瞭解一下stl的binarySearch函數。
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
double x,y;
double f(double x) { //求導求駐點
return 42*pow(x,6)+48*pow(x,5)+21*pow(x,2)+10*x-y;
}
double func(double x) {
return 6*pow(x,7)+8*pow(x,6)+7*pow(x,3)+5*pow(x,2)-x*y;
}
void binarySearch() { //二分查找
double l=0,r=100;
double mid=l+(r-l)/2;
while(fabs(f(mid))>1e-6) {
mid=l+(r-l)/2;
double a=f(mid);
if(a>=0) r=mid;
else if(a<0) l=mid;
}
printf("%.4f\n",func(mid));
}
int main()
{
int t;
cin>>t;
while(t--) {
cin>>y;
binarySearch();
}
return 0;
}