膨胀的木棍

【题目描述】

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

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

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

【输入格式】

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

【输出格式】

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

 

【代码】

 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 }

 

转载于:https://www.cnblogs.com/Dawn-Star/p/9156846.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值