膨胀的木棍

【题目描述】

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

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

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

【输入格式】

三个非负实数:木棍初始长度(单位:毫米),温度变化(单位:度),以及材料的热膨胀系数。
保证木棍不会膨胀到超过原始长度的1.5倍。

【输出格式】

木棍中心的偏移距离(单位:毫米),保留到小数点后第三位。

【代码】

扫描二维码关注公众号,回复: 1529604 查看本文章
 1 #include<bits/stdc++.h>
 2 #define pi 3.1415926
 3 
 4 using namespace std;
 5 const double e=1e-14;
 6 double n,m,k,t;
 7 double calc(double x){
 8     double y=n/2/sin(x);
 9     return 2*y*x;
10 }
11 int main()
12 {
13     cin>>n>>m>>k;
14     t=(1+m*k)*n;//先计算长度
15     double l=0.000000000001,r=pi/2;
16     while(r-l>e){
17         double mid=(l+r)/2;
18         if(calc(mid)<t) l=mid;
19         else r=mid;
20     }
21     printf("%0.3lf",(n/2/sin(l)-n/2/tan(l)));
22     return 0;
23 }

猜你喜欢

转载自www.cnblogs.com/Dawn-Star/p/9156846.html