弯曲的木棍

弯曲的木棍点击打开链接

总时间限制:  
1000ms
  内存限制:  65536kB
描述

当长度为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.0001
		printf("%.3lf\n",mid);
	else
		if(b1==b)
			printf("%.3lf\n",mid);
		else
			if(b1<b)
				tann(mid,r);
			else
				tann(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;  
}  
谢谢观赏!!!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值