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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值