【noiOJ】p7939

09:膨胀的木棍

总时间限制: 
1000ms
 
内存限制: 
65536kB
描述

当长度为L的一根细木棍的温度升高n度,它会膨胀到新的长度L'=(1+n*C)*L,其中C是热膨胀系数。

当一根细木棍被嵌在两堵墙之间被加热,它将膨胀形成弓形的弧,而这个弓形的弦恰好是未加热前木棍的原始位置。

你的任务是计算木棍中心的偏移距离。

输入
三个非负实数:木棍初始长度(单位:毫米),温度变化(单位:度),以及材料的热膨胀系数。
保证木棍不会膨胀到超过原始长度的1.5倍。
输出
木棍中心的偏移距离(单位:毫米),保留到小数点后第三位。
样例输入
1000 100 0.0001
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cmath>
 4 #define pi=3.14159263589793
 5 using namespace std;
 6 int main()
 7 {
 8     double l,n,c,ll,left,mid,right;
 9     scanf("%lf%lf%lf",&l,&n,&c);
10     ll=(1+n*c)*l;
11     left=0;
12     right=asin(1.0);
13     while (right-left>1e-14)
14     {
15         mid=(right+left)/2;
16         if (ll*sin(mid)/mid<=l)
17             right=mid;
18         else
19             left=mid;
20     }
21     printf("%.3lf",l/2*tan(left/2));
22     return 0;
23 } 
网上找的公式,因为不知道C++的sin是弧度制计算,且不会弧度制。。
—Anime Otaku Save The World.
原文地址:https://www.cnblogs.com/DMoon/p/5004431.html