#XMOJ10124. 往返跑

往返跑

说明

时间限制:1 Sec 内存限制:256 MB 输入文件:run.in 输出文件:run.out

蜜蜂小 B 喜欢往返跑,每年都很期待学校的体能测试。

有一次,为了提高往返跑的成绩,小 B 想到了如下的练习方法。


  1. 找到一列向左行驶,速度为 $v_l$(米/秒)的列车,和一列向右行驶,速度为 $v_r$(米/秒)的列车。
  2. 此时,两列列车相向而行,相距 $d$(米)。
  3. 在 $t=0$ 时,小 B 从左边列车的车头处以速度 $w$(米/秒)向右出发。
  4. 到达右边列车的车头时,触摸一下,然后向左折返。
  5. 到达左边列车的车头时,触摸一下,然后向右折返。
  6. 重复步骤 4 和 5,直到两列列车错车(相遇),练习结束。


练习结束后,小 B 想知道自己移动了多远的距离。请为小 B 计算出总的移动距离(单位:米)。

另外,小 B 的移动速度比两列列车的移动速度要快,两列列车的位置可以用 $x$ 轴来表示,将除此以外的空间距离视为 $0$,小 B 朝着与地面平行的方向前进,可以忽略触摸(列车车头)所花费的时间。

输入格式

第一行两个整数 $v_l,v_r$。

第二行一个整数 $d$。

第三行一个整数 $w$。

输出格式

请输出小 B 的总移动距离(单位:米)。最后请换行。

输出的结果,其绝对误差或相对误差在 \(10^{-6}\) 以下是被允许的。

样例

样例 1

1 1
6
2

6

样例说明:

初始状态是这个。 

在第一次触摸右边的列车时,小 B 移动了 $4$ 米。 

折返并触摸左边的列车时,小 B 移动了 \(\frac{4}{3}\) 米。

重复这样的情况,所以答案是 \(\sum_{n = 0}^{\infty} \frac{4}{3^n} = 6\) 。

样例 2

1 3
12
7

21

样例 3

90 568
5019
870

6636.0638297

数据范围

对于 20% 的数据,$v_l,v_r,d,w \le 10^6$。

另有 10% 的数据,$v_l,v_r \le 10$。

对于 100% 的数据,$1 \le v_l,v_r \le 10^9$,$1 \le d \le 10^9$,$1 \le w \le 10^9$,$\max\{v_l,v_r\} \lt w$。