弯曲的木棍
弯曲的木棍点击打开链接
- 总时间限制:
- 1000ms
- 描述
-
当长度为L的一根细木棍的温度升高n度,它会膨胀到新的长度L'=(1+n×C)×L,其中C是热膨胀系数。
当一根细木棍被嵌在两堵墙之间被加热,它将膨胀形成弓形的弧,而这个弓形的弦恰好是未加热前木棍的原始位置。
你的任务是计算木棍中心的偏移距离h。 输入 - 输入包含多行,每行输入包括3个 非负数:细木棍的初始长度L,温度的变化n,材料的热膨胀系数C。输入数据保证细木棍伸长的长度 不会超过原长的一半,最后一行为3个-1, 不做处理。 输出
- 对每一行输入,输出细木棍的中心在受热前后移动的距离,精确到 小数点后3位。 样例输入
-
1000 100 0.0001 15000 10 0.00006 10 0 0.001 -1 -1 -1
样例输出 -
61.329 225.020 0.000
源码
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
double L,n,c,l,r,b;
void tann(double l,double r)
{double mid=(l+r)/2,R=(mid*mid+L*L/4)/(2*mid),b1=2*asin(L/2/R)*R;if(r-l<1e-4)//控制精度于0.0001printf("%.3lf\n",mid);elseif(b1==b)printf("%.3lf\n",mid);elseif(b1<b)tann(mid,r);elsetann(l,mid);
}//分治求值
int main()
{ while(scanf("%lf %lf %lf",&L,&n,&c))//循环输入{if(L==-1)return 0;b=(1+n*c)*L;tann(0,L/2);}return 0;
}
谢谢观赏!!!
弯曲的木棍
弯曲的木棍点击打开链接
- 总时间限制:
- 1000ms
- 描述
-
当长度为L的一根细木棍的温度升高n度,它会膨胀到新的长度L'=(1+n×C)×L,其中C是热膨胀系数。
当一根细木棍被嵌在两堵墙之间被加热,它将膨胀形成弓形的弧,而这个弓形的弦恰好是未加热前木棍的原始位置。
你的任务是计算木棍中心的偏移距离h。 输入 - 输入包含多行,每行输入包括3个 非负数:细木棍的初始长度L,温度的变化n,材料的热膨胀系数C。输入数据保证细木棍伸长的长度 不会超过原长的一半,最后一行为3个-1, 不做处理。 输出
- 对每一行输入,输出细木棍的中心在受热前后移动的距离,精确到 小数点后3位。 样例输入
-
1000 100 0.0001 15000 10 0.00006 10 0 0.001 -1 -1 -1
样例输出 -
61.329 225.020 0.000
源码
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
double L,n,c,l,r,b;
void tann(double l,double r)
{double mid=(l+r)/2,R=(mid*mid+L*L/4)/(2*mid),b1=2*asin(L/2/R)*R;if(r-l<1e-4)//控制精度于0.0001printf("%.3lf\n",mid);elseif(b1==b)printf("%.3lf\n",mid);elseif(b1<b)tann(mid,r);elsetann(l,mid);
}//分治求值
int main()
{ while(scanf("%lf %lf %lf",&L,&n,&c))//循环输入{if(L==-1)return 0;b=(1+n*c)*L;tann(0,L/2);}return 0;
}
谢谢观赏!!!