码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 2899

时间:2015-08-31 21:38:58      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

http://acm.hdu.edu.cn/showproblem.php?pid=2899

二分搜索+求导

对函数进行求导,导数为0时,x的值是函数值最小

导数小于0函数递减,导数大于0函数递增

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
#define N 1010
#define INF 0x3f3f3f3f

using namespace std;

int main()
{
    int t;
    double y, f, f1;
    scanf("%d", &t);
    while(t--)
    {
        scanf("%lf", &y);
        double mid, low = 0, high = 100;
        while(high - low > 1e-8)/***此处注意*/
        {
            mid = (low + high) / 2;
            f1 = 42 * pow(mid, 6) + 48 * pow(mid, 5) + 21 * pow(mid, 2) + 10 * mid;//导数
            if(f1 < y)
                low = mid;
            else if(f1 == y)
                break;
            else
                high = mid;
        }
        f = 6 * pow(mid, 7) + 8 * pow(mid, 6) + 7 * pow(mid, 3) + 5 * pow(mid, 2) - mid * y;
        printf("%.4f\n", f);
    }
    return  0;
}

 

hdu 2899

标签:

原文地址:http://www.cnblogs.com/qq2424260747/p/4773992.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!