2 100 200
-74.4291 -178.8534
/* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:HDU.cpp *作 者:单昕昕 *完成日期:2015年2月27日 *版 本 号:v1.0 */ #include<iostream> #include<stdio.h> #include<cmath> using namespace std; double f(double x,long long y) { return (42*x*x*x*x*x*x+48*x*x*x*x*x+21*x*x+10*x-y); } int main() { int t; cin>>t; while(t--) { double mid=50.0,m=0.0,n=100.0,x,s; long long y; cin>>y; while(fabs(f(mid,y))>1e-5) { if((f(mid,y)>0)) { n=mid; mid=(m+n)/2; } else if(f(mid,y)<0) { m=mid; mid=(m+n)/2; } } x=mid; s=6*x*x*x*x*x*x*x+8*x*x*x*x*x*x+7*x*x*x+5*x*x-y*x; printf("%.4lf\n",s); } return 0; }
知识点总结:
学习心得:
如图。
数学问题,二次求导之后发现原函数单调递减,所以当一阶导数为0时的x值满足使原函数取得最小值。
即题目转化成求一阶导数为零的方程的解,然后带入原函数求得最小值。