HDU 2899 Strange Function

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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章