女孩在以英雄為圓心、半徑 R 的圓上勻速運動 (速度 v1)。英雄從圓心出發速度 v2 追擊,且三點 (英雄、女孩、圓心) 始終共線。英雄腿疼只能跑距離 D。判斷能否追上。
共線條件 ⇒ 英雄與女孩角速度相同 ω = v1/R。英雄徑向速度 v_r,切向速度 v_θ = ω * r = v1 * r / R。總速度 v2^2 = v_r^2 + v_θ^2。
v_r = dr/dt = sqrt(v2^2 - (v1*r/R)^2)。
分離變數積分:
dt = dr / sqrt(v2^2 - (v1^2/R^2) r^2)
t = ∫_0^R dr / sqrt(v2^2 - (v1^2/R^2) r^2)
= (R/v1) * arcsin(v1/v2) [三角換元 r = (R v2/v1) sin θ]
英雄跑過總距離 L = v2 * t = (R v2 / v1) * arcsin(v1/v2)。
若 L ≤ D 輸出 "Wake up to code",否則 "Why give up treatment"。
int main() {
int T; cin>>T;
while (T--) {
double v1, v2, R, D;
cin>>v1>>v2>>R>>D;
double t = R / v1 * asin(v1 / v2);
double L = t * v2;
cout << (L > D ? "Why give up treatment" : "Wake up to code") << '\n';
}
}
v1 < v2 否則 asin 定義域錯誤 (題目保證)。double 精度足夠。