• LightOj1137


    题目链接:http://lightoj.com/volume_showproblem.php?problem=1137

    题意:有一根绳子的长度为l,在有温度的情况下会变形为一个圆弧,长度为 l1 = (n*c+1)*l;求图中的h;并说明增加的长度不超过原长度的一半;

    我们可以二分h,然后根据h求弧长,比较一下和l1的长度即可;

    把弧长公式记错我也是醉了;

     

    #include <stdio.h>
    #include <algorithm>
    #include <cstring>
    #include <cmath>
    using namespace std;
    const int N = 2010;
    const double eps = 1e-6;
    const double PI = acos(-1);
    
    int main()
    {
        int T, t = 1;
        double n, c, l;
        scanf("%d", &T);
        while(T--)
        {
            scanf("%lf %lf %lf", &l, &n, &c);
            double l1 = (n*c+1)*l;
            double left = 0, right = l/2, ans = 0;
            while(right-left > eps)
            {
                double mid = (right + left)/2;/// h;
                double r = (l*l/4+mid*mid)/(2*mid);///半径r;
                double a = 2*acos((r-mid)/r);///圆心角a,弧长公式a*r;
                if(fabs(r*a-l1)<eps)
                {
                    ans = mid;
                    ///break;不能加这句...;
                }
                if(r*a < l1)
                    left = mid;
                else
                    right = mid;
            }
            printf("Case %d: %.6f
    ", t++, ans);
        }
        return 0;
    }
    View Code

     

  • 相关阅读:
    模板类 & 虚函数
    Page Color (页面着色)
    修改静态库
    ElementUI 时间选择器
    自定义export
    vue组件
    ElementUI 表格
    ElementUI 分页
    数组方法分类
    Vue过滤数组副本
  • 原文地址:https://www.cnblogs.com/zhengguiping--9876/p/5915832.html
Copyright © 2020-2023  润新知