#XMOJ10124. 往返跑
往返跑
说明
时间限制:1 Sec
内存限制:256 MB
输入文件:run.in 输出文件:run.out
蜜蜂小 B 喜欢往返跑,每年都很期待学校的体能测试。
有一次,为了提高往返跑的成绩,小 B 想到了如下的练习方法。

- 找到一列向左行驶,速度为 $v_l$(米/秒)的列车,和一列向右行驶,速度为 $v_r$(米/秒)的列车。
- 此时,两列列车相向而行,相距 $d$(米)。
- 在 $t=0$ 时,小 B 从左边列车的车头处以速度 $w$(米/秒)向右出发。
- 到达右边列车的车头时,触摸一下,然后向左折返。
- 到达左边列车的车头时,触摸一下,然后向右折返。
- 重复步骤 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$。
相关
在下列比赛中: