HDU 2899 Strange fuction(二分)
来源:互联网 发布:红色警戒扫矿软件 编辑:程序博客网 时间:2024/05/17 08:34
Description
给出一个函数F(x)=6*x^7+8*x^6+7*x^3+5*x^2-y*x(0<=x<=100),现给出y值,输出F(x)最小值
Input
第一行为一个整数t表示用例组数,每组用例占一行为一个整数y(0 < y < 1e10)
Output
对于每个y值,输出F(x)在区间[0,100]上的最小值,结果保留到小数点后四位
Sample Input
2
100
200
Sample Output
-74.4291
-178.8534
Solution
对F(x)求导后得到其导函数G(x)=42*x^6+48*x^5+21*x^2+10*x-y,显然G(x)在[0,100]上递增,当G(x)有零点时,二分求其零点x0,F(x0)即为最小值;当G(x)无零点,即G(100)<=0时,F(100)即为最小值
Code
#include<stdio.h>#include<math.h>#define eps 1e-8int y;double g(double x){ return 42.0*pow(x,6)+48.0*pow(x,5)+21.0*pow(x,2)+10.0*x;}double f(double x){ return 6.0*pow(x,7)+8.0*pow(x,6)+7.0*pow(x,3)+5.0*pow(x,2)-y*x;}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%d",&y); if(g(100.0)-y<eps)//f(x)递减 { printf("%.4lf\n",f(100.0)); continue; } double l=0,r=100.0,mid; while(r-l>=eps)//二分求g(x)零点 { mid=(l+r)/2.0; if(g(mid)-y<eps) l=mid; else r=mid; } printf("%.4lf\n",f(mid)); } return 0;}
0 0
- hdu - 2899 - Strange fuction(二分)
- hdu 2899 Strange fuction (求导 + 二分)
- HDU 2899 Strange fuction(二分)
- hdu 2899 Strange fuction (二分)
- HDU 2899 Strange fuction(二分||三分)
- HDU 2899 Strange fuction(二分,三分)
- Strange fuction HDU 2899 【二分】
- HDU 2899 Strange fuction [二分]
- HDU 2899 Strange fuction(二分查找根)
- HDU 2899 Strange fuction(二分或三分)
- HDU 2899 Strange fuction(二分||三分)
- HDU--杭电--2899--Strange fuction--二分
- HDU 2899 Strange fuction 二分+数学
- HDU 2899 Strange fuction 二分 + 精度控制
- HDU 2899 Strange Fuction(二分查找)
- hdu 2899 Strange fuction 【二分,三分】
- hdu 2899 Strange fuction(导数+二分)
- hdu 2899 Strange fuction(二分+数学)
- getline()~~
- pageDateTime(网页日期时间)
- 本地mapReduce项目报错:java.io.IOException: Unable to establish loopback connection;
- uva 1025 A Spy in the Metro
- DirectX11 平行光
- HDU 2899 Strange fuction(二分)
- JSP之Cookie的实现
- 条款13:关于文中多次提及的auto_ptr和shared_ptr
- Java设置环境变量
- spark 日志分析
- LeetCode 065 Valid Number
- 自适应网页开发
- iOS的实时搜索:UISearchBar与UISearchController
- 面向对象的四个基本特征