首页 > 其他 > 详细

hdu 2899

时间:2015-08-31 21:36:01      阅读:223      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!