牛客練習賽28 E【斜拋運動的最大水平射程】
阿新 • • 發佈:2019-01-01
連結:https://www.nowcoder.com/acm/contest/200/E
來源:牛客網
題目描述
女裝會成癮
由於某人的精心設計,小可愛掉入了女裝的天坑無法自拔。
於是……她開始瘋狂的成批的買女裝。
而Kirito_Rivaille為了戒掉他的女裝病,準備實施家暴——把小可愛的女裝從窗戶扔下去
他們家距離地面的高度為H,也就是說,女裝都是從這了被丟擲去的。
而由於Kirito_Rivaille體力有限,(女裝也很沉),所以她丟擲去的速度最大是v(最小是0);
之後呢,Kirito_Rivaille為了不讓小可愛在下去撿到,於是想盡可能的拋的遠一點。
所以現在他想找個合適的角度丟擲。
作為Kirito_Rivaille身邊的活寶,你的任務是幫助Kirito_Rivaille。
給出他們倆住的屋子的高度H和丟擲速度v,請你找到一個合適的角度θ使得落地時距他們腳下的地面(H=0的位置)的直線距離最遠。
然而小可愛並不關心這個角度是多少,只關心距離他們的直線距離是多少。
輸出四捨五入保留五位小數,當你的答案與std的相對誤差不超過0.00001時就算正確了。
說明:不考慮空氣阻力,g取9.80665。
提示公式:
x=vtcosθ,
y=H+vtsinθ-0.5*gt2
其中t為飛行時間。
輸入描述:
第一行一個正整數T 接下來T行每行兩個實數H,v
輸出描述:
T行每行一個數,保留五位小數。
示例1
輸入
1 0 10
輸出
10.19716
備註:
H<=100000 v<=100000 T<=1000
題解:按公式求即可。
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #define ll long long #define g 9.80665 using namespace std; int main() { int t; double h, v; cin >> t; while(t--){ cin >> h >> v; double ans = v * sqrt(v*v+2*g*h) / g; printf("%.5lf\n", ans); } return 0; }