首页 > 其他 > 详细

HDU 2899

时间:2016-01-15 01:04:23      阅读:198      评论:0      收藏:0      [点我收藏+]

搜索第二题、

把函数的导函数求出来判断就行了,因为这函数是先减后增的,所以就是把mid缩小到极值点附近

 

 1 #include <stdio.h>
 2 #include <math.h>
 3 const double mm = 1e-8;
 4 double y;
 5 double cal(double x){
 6     return 42.0*pow(x,6.0)+48.0*pow(x,5.0)+21.0*pow(x,2.0)+10.0*x;
 7 }
 8 double ans(double x){
 9     return 6.0*pow(x,7.0)+8.0*pow(x,6.0)+7.0*pow(x,3.0)+5.0*pow(x,2.0)-y*x;
10 }
11 int main()
12 {
13     int t;scanf("%d",&t);
14     while(t--){
15         scanf("%lf",&y);
16         if(cal(100.0)-y<=0.0){
17             printf("%.4lf\n",ans(100.0));
18             continue;
19         }
20         double l=0,r=100,mid;
21         while(r-l>mm){
22             mid=(l+r)/2.0;
23             if(cal(mid)-y>0.0)    r=mid;
24             else                l=mid;
25         }
26         printf("%.4lf\n",ans(mid));
27     }
28 }

 

HDU 2899

原文:http://www.cnblogs.com/sasuke-/p/5132092.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!