题意:
有个人在蹦极,给出悬崖的高度,绳子的长度,弹簧绳的胡克系数 以及 人的质量。
判断人是否能够着地,能的话是否能安全着地。所谓安全着地就是到达地面的速度不超过10m/s.
分析:
学过一点高中物理的就应该能解出来吧,既然是题解还是本着详细具体的原则来写。
首先要求人能下落的最大高度,也就是重力做的功全部转化为弹簧绳的弹性势能。
那么人能下落的最大高度就是l + Δl
如果人能落地,还要看绳长l与悬崖高度s的关系
最后再判断v和10的关系。
1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 using namespace std; 5 6 const double g = 9.81; 7 8 int main() 9 { 10 //freopen("in.txt", "r", stdin); 11 double k, l, s, m; 12 while(scanf("%lf%lf%lf%lf", &k, &l, &s, &m) == 4) 13 { 14 if(k+l+s+m == 0) break; 15 16 double delta_l = (m*g + sqrt(m*m*g*g + 2.0*k*l*m*g)) / k; 17 double maxh = l + delta_l; 18 if(s > maxh) puts("Stuck in the air."); 19 else 20 {//能到达地面 21 double v; 22 if(s <= l) v = sqrt(2.0 * g *s); 23 else v = sqrt(2.0 * g * s - k * (s-l) * (s-l) / m); 24 if(v <= 10.0) puts("James Bond survives."); 25 else puts("Killed by the impact."); 26 } 27 } 28 29 return 0; 30 }