数学->hdu 3628 HeavenHelix

HeavenHelix
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

Description

It's said that MJ was invited to perform for the God. Unfortunately, God was intoxicated in the excellent voice and the moonwalk of MJ. The second day, God said, "Let there be MJ and there was MJ." So MJ stayed, leaving his poor fans' hearts broken ... (Sounds unrealistic.)
However, when the third day passed, MJ missed his Neverland so much. His soulful songs conveyed the sorrow to the God. So God built a new Neverland in the Heaven on the forth day. It is said that there is a Roller Coaster called HeavenHelix in the new Neverland. It is so huge that the train seemed to be just a point. The train does uniform circular motion on horizontal plane(The radius is r,and the angular speed is ω rad/s),while it does uniform liner motion in vertical direction(The speed is v m/s)from the top to the bottom. To monitor the train, there is a camera installed on the bottom, where the center of the circle is located. The amount of energy the camera consumes is up to the distance between the train and itself: Assuming the distance is D meters, and in the very moment it travels ds meters, the camera should consume X*D*ds kJ energy from the God. When the Neverland was built, God distributed E kJ energy to the camera initially. God had calculated accurately to make sure that the train will be exactly on the bottom, as soon as the energy is used up. MJ wanted to know how long he can enjoy himself riding the HeavenHelix the sky. Can you help him?
 

Input

There are multiple cases. In each case, there will be only one line, containing five integers, r,ω, v, X and E (r≥0, ω≥0, v > 0, X > 0, E≥0), which have the same meaning mentioned above. All the numbers are smaller than 231. The input will be terminated by five zero, which were not need to be proceeded. There is a correct answer for each case.
 

Output

For each case, output the total time of the train ran before its stop in a single line. Present the answer in seconds, and accurate to 4 decimal places. You may assume that MJ can ride the HeavenHelix for at most 30 days.
 

Sample Input

     
     
1 1 2 2 2 0 0 0 0 0
 

Sample Output

     
     
0.4062
 

#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

#define eps 1e-8

double r, w, v, x, e;

double function(double t)
{
	return (t * v * sqrt(r * r + t * t * v * v) + r * r * log(v * (t * v + sqrt(r * r + t * t * v * v)))) / (2.0 * v);
}

bool is_true(double ans)
{
	double t = x * sqrt(w * w * r * r + v * v) * (function(ans) - function(0));
	
	if (e - t < eps)
	{
		return true;
	}
	else
	{
		return false;
	}
}

void input()
{
	while (cin >> r >> w >> v >> x >> e)
	{
		if (r < eps && w < eps && v < eps && x < eps && e < eps)
		{
			break;
		}
		
		double low = 0, high = 2700000.0;
		double ans = 0;
		
		if (r < eps)
		{
			printf("%.4lf\n", sqrt(2 * e / v / v));
			continue;
		}
		while (low <= high)
		{
			ans = (low + high) / 2.0;
			
			if (is_true(ans))
			{
				high = ans - eps;
			}
			else
			{
				low = ans + eps;
			}
		}
		
		printf("%.4lf\n", ans);
	}		
}

int main()
{
	input();
	return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值