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是弧度制计算,且不会弧度制。。
时间: 2024-10-07 19:57:18