三维弹球
题号:NC214501
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

大家都玩过三维弹球吧,现在有一个简化版的三维弹球。游戏开始时,弹球在一个正三角形中间,弹球有一个初速度,当弹球撞到墙壁(也就是三角形的边)时弹球会反弹(相当于光在镜面上的反射),且反弹后速度保持不变。和原版三维弹球不同的是,三面墙壁会以相同的速度沿墙壁的垂直方向前进(可以把墙壁想象成可以互相穿透的平面)。当三角形缩成一个点时,游戏结束。那么问题来了,当游戏结束时,弹球一共滚了多少米呢?

输入描述:

多组数据。每组第一行输入4个整数n,v1,v2,c(0<=n,v1,v2<=100,-180<=c<=180)表示三角形的边长,墙的移动速度(米/秒),弹球的初速度大小(米/秒),初速度与水平方向的夹角(度)。保证v1不等于0。

输出描述:

当游戏结束时,弹球滚动的距离(米),保留2位小数。
示例1

输入

复制
1 1 1 45

输出

复制
0.29