Forrest


私信TA

用户名:dotcpp0717441

访问量:3998

签 名:

等  级
排  名 88
经  验 9136
参赛次数 1
文章发表 121
年  龄 0
在职情况 教师
学  校 优学乐程
专  业

  自我简介:

解题思路:

思路】:二分θ

根据L‘=(1+n*C)*L求出膨胀后的长度L’

因为θ是圆心角,所以θϵ[0,π]

根据弧长公式:l= 2θ/2π * 2πr可得l=2θr

sinθ=L/2r,则r=L/2*sinθ,则弧长l为 L*θ/sinθ

微信截图_20240327165515.png

使用二分θ求出的l'和L'比较 

 l>L',则θ

需要取左半边

l<L',则θ

需要取右半边

#include<iostream>
#include<iomanip>
#include<cmath>
using namespace std;

int main()
{
    double l,n,c,r;
    cin>>l>>n>>c;
    double left=0,right=acos(-1.0),mid;
    double l2=(1+n*c)*l;
    while(right-left>1e-12)
    {
        mid=(left+right)/2.0;
        if(l * mid / sin(mid) < l2)
            left=mid;
        else
            right=mid;
    }
    r=l2/(2*mid);
    printf("%.3lf\n",(1-cos(mid))*r);
    return 0;

}


 

0.0分

1 人评分

  评论区

  • «
  • »