I - Expanding Rods解题报告(黄杰)

转载 2012年03月21日 13:46:20

I - Expanding Rods
Time Limit:1000MS     Memory Limit:30000KB     64bit IO Format:%I64d & %I64u

Description

When a thin rod of length L is heated n degrees, it expands to a new length L'=(1+n*C)*L, where C is the coefficient of heat expansion. 
When a thin rod is mounted on two solid walls and then heated, it expands and takes the shape of a circular segment, the original rod being the chord of the segment. 

Your task is to compute the distance by which the center of the rod is displaced. 

Input

The input contains multiple lines. Each line of input contains three non-negative numbers: the initial lenth of the rod in millimeters, the temperature change in degrees and the coefficient of heat expansion of the material. Input data guarantee that no rod expands by more than one half of its original length. The last line of input contains three negative numbers and it should not be processed.

Output

For each line of input, output one line with the displacement of the center of the rod in millimeters with 3 digits of precision. 

Sample Input

1000 100 0.0001
15000 10 0.00006
10 0 0.001
-1 -1 -1

Sample Output

61.329
225.020
0.000

题目大意:一个长度为L的杆,在温度n下,会扩展到一个新长度L'=(1+n*C)*L,c为形变系数,题目要求计算如图扩展后,拉长杆的中心与圆杆中心的距离,输入为-1,-1,-1则退出程序。
题目链接:http://poj.org/problem?id=1905
方法:二分法
思路:这个就很简单啦,二分的对象显然是中心的距离,然后通过中心距离和圆杆长来计算扩展后的长度(不要告诉我你不会算--),在比较实际扩展的长度,这样就行了,注意精确度。
算法实现:

#include<stdio.h>
#include<math.h>
int main()
{
	double l,n,c,L,r,len;
	double low,high,mid;
	while(scanf("%lf%lf%lf",&l,&n,&c)!=EOF)
	{
		if(l<0&&n<0&&c<0)
			break;
		else
		{
			low=0;
			L=(1+n*c)*l;
			high=l/2;
			while(high-low>=1e-5)
			{
				mid=(low+high)/2.0;//由mid和l求出此时的理论长度len,然后进行比较。
				r=l*l/(8*mid)+mid/2;
				len=2*r*asin(l/(2*r));
				if(len>=L)
					high=mid;
				else
					low=mid;

			}
			printf("%.3lf\n",mid);
		}
	}
	return 0;
}




相关文章推荐

POJ-1905 Expanding Rods 解题报告

Description When a thin rod of length L is heated n degrees, it expands to a new length L'=(1+n*C...

G - Monthly Expense解题报告(黄杰)

G - Monthly Expense Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d &am...

A - SnowflakeSnowSnowflakes解题报告(黄杰)

A - SnowflakeSnowSnowflakes Time Limit:4000MS     Memory Limit:65536KB     64bit IO Format:%I6...

F - Babelfish解题报告(黄杰)

F - Babelfish Time Limit:3000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I6...

D - Eqs解题报告(黄杰)

D - Eqs Time Limit:5000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Su...

J - Pie解题报告(黄杰)

J - Pie Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Su...

HDOJ 1026 Ignatius and the Princess I 解题报告

HDOJ 1026 Ignatius and the Princess I 解题报告 题意: 就是有一个迷宫还是地图的什么鬼东西,需要从左上角去往右上角,.表示可以走,X表示不可以走,然后如果出现数...

HDU1026 Ignatius and the Princess I 解题报告--bfs

Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J...

I - An Easy Problem!解题报告(来自网络)

I - An Easy Problem! Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d &a...

E - I Love You Too解题报告(张宇)

E - I Love You Too Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)