zoukankan      html  css  js  c++  java
  • 九度oj 1551 二分 + 精度

    当刀痕长度从0--2*R 区间时, 比例是递增函数, 故满足二分法的条件。即  r(h)  =r0 , 求h

    题目来源:

    http://ac.jobdu.com/problem.php?pid=1551

    题目1551:切蛋糕

    时间限制:1 秒

    内存限制:128 兆

    特殊判题:

    提交:257

    解决:84

    题目描述:

    有如下图半价为R的圆形蛋糕,被切一刀后(图中红色直线),分成两个部分(黄色和绿色),已知其比例为r,求刀痕长度(图中红色直线)。

    输入:

    输入包括多组测试数据,包括一个整数R(1<=R<=1000),和一个浮点数r(0<r<1),精确到第四位小数。

    输出:

    对于每组测试用例,输出一个浮点数,代表刀痕的长度,保留二位小数。

    样例输入:
    1000 0.5000
    500 0.6183
    样例输出:
    1928.53
    982.49

    代码如下:
    #include<iostream>
    #include<stdlib.h>
    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    #include<string>
    #include<queue>
    #include<algorithm>
    #define PI acos(-1.0)
    #define eps 1e-8
    using namespace std;
    double R;
    double area(double h)
    {
        double arc=asin(h*0.5/R);
        return R*R*arc- 0.5 *h*sqrt(R*R - 0.25*h*h);
    }
    double are(){return R*R*PI;}
    
    double judge(double h)
    {
        return area(h)/(are()-area(h));
    }
    double bin_search(double r)
    {
        double left ,right, mid;
        left=0,right=2*R;
        double S=are();
        while(right-left>eps)
        {
            mid=(left+right)*0.5;
            if(judge(mid) >r )
                right=mid;
            else left = mid;
        }
        return (left+right)*0.5;
    
    }
    int main()
    {
        double r;
        while(cin>>R>>r)
        {
            printf("%.2f
    ",bin_search(r));
        }
        return 0;
    }




     
  • 相关阅读:
    js--script和link中的 integrity 属性
    html之aria-hidden="true"
    S-HR之导入模板校验非当天变更限制
    拆分字符串
    S-HR之变动操作,变动原因,变动类型/离职操作,离职原因,离职类型
    mysql数学函数
    html页面引入
    springboot之server属性
    【开发工具】-Idea代码提示忽略大小写
    【个人提升】-怎样获得技术的成长(转)
  • 原文地址:https://www.cnblogs.com/zn505119020/p/3592093.html
Copyright © 2011-2022 走看看