• HDU 2899


    搜索第二题、

    把函数的导函数求出来判断就行了,因为这函数是先减后增的,所以就是把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
    ",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
    ",ans(mid));
    27     }
    28 }
  • 相关阅读:
    75. 颜色分类
    排序链表
    两个数组的交集
    242. 有效的字母异位词
    排序优化
    622.设计循环队列
    比较含退格的字符串
    682.棒球比赛
    496.下一个更大的元素I
    线性排序算法
  • 原文地址:https://www.cnblogs.com/sasuke-/p/5132092.html
Copyright © 2020-2023  润新知