24h購物| | PChome| 登入
2012-07-14 09:13:55| 人氣784| 回應0 | 上一篇 | 下一篇

[UVA] 10693 - Traffic Volume

推薦 0 收藏 0 轉貼0 訂閱站台

Problem F
Traffic Volume
Input: standard input
Output: standard output
Time Limit: 1 second
 

In the picture below (or above depending on HTML response :)) you can see a street. It has infinite number of cars on it. The distance between any two consecutive cars is d, length of each car is L and the velocity of each car is v. The volume of cars through a road means the number of cars passing through a road in a specific amount of time. When the velocity is constant, d must be minimum for the volume of cars passing through the road to be maximal. In our model when the velocity of all the cars is v then the minimum possible value of d is v²/(2f) (The more the car velocity the more distance you need to bring down your velocity to zero). Here f is the deceleration due to break.

Keeping this model in mind and given the value of L and f your job is to find the value of v for which the volume of traffic through the road is maximal.

 

Input

The input file contains several lines of input. Each line of input contains two integers L (0<L<=100) and f(0<f<=10000). The unit of L is meter and the unit of f is meter/second². The input is terminated by a single line whose value of L and f is zero.

 

Output

For each line of input except the last one produce one line of output. Each line contains two floating-point number v and volume separated by a single space. Here v is the velocity for which traffic flow is maximal and volume is the maximum number of vehicles (of course it is a fraction) passing through the road in an hour. These two floating points should have eight digits after the decimal. Errors less than 1e-5 will be ignored.

 

Sample Input                           Output for Sample Input

5 3
0 0

5.47722558 1971.80120702

 


Problem setter: Shahriar Manzoor, Member of Elite Problemsetters' Panel

Special Thanks: Derek Kisman


計算公式 !
f(v) = 3600 * v / (L + d)    //流量公式, 記得換算單位
d = v*v / (2f)

f(v) = 3600 * v / (L + v*v/(2f))
f'(v) = (4fL - 2fv*v) / (2Lf + v*v)^2
得 v = sqrt(2fL)

#include <stdio.h>
#include <math.h>

int main() {
    double L, f;
    while(scanf("%lf %lf", &L, &f) == 2) {
        if(L == 0 && f == 0)
            break;
        double v = sqrt(2*L*f);
        double fun = 3600*v/(L+v*v/2/f);
        printf("%.8lf %.8lf\n", v, fun);
    }
    return 0;
}

台長: Morris
人氣(784) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: UVA |
此分類下一篇:[UVA][dfs, 窮舉] 140 - Bandwidth
此分類上一篇:[UVA][Math] 10666 - The Eurocup is Here!

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文