描述
当长度为L的一根细木棍的温度升高n度,它会膨胀到新的长度L'=(1+n*C)*L,其中C是热膨胀系数。
当一根细木棍被嵌在两堵墙之间被加热,它将膨胀形成弓形的弧,而这个弓形的弦恰好是未加热前木棍的原始位置。
你的任务是计算木棍中心的偏移距离。
输入
三个非负实数:木棍初始长度(单位:毫米),温度变化(单位:度),以及材料的热膨胀系数。
保证木棍不会膨胀到超过原始长度的1.5倍。
输出
木棍中心的偏移距离(单位:毫米),保留到小数点后第三位。
#include <iostream>
#include <cmath>
using namespace std;
int main(){
double l,t,c;
cin>>l>>t>>c;
double L=(1+t*c)*l;
L/=2;
l/=2;
double left=0,r=L;
double mid;
while(r-left>=1e-7){
mid=(left+r)/2;
double R=(mid*mid+l*l)/(2*mid);
double LL=R*asin(l/R);
if(LL>L){
r=mid;
}else{
left=mid;
}
}
printf("%.3f",left);
return 0;
}