题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1155
题目很长,但是很容易理解,就是人从高s的桥上跳下来,手拉着长为l的绳子末端,如果绳子太短那么人将在空中输出Stuck in the air.
如果人落地速度大于10的话就死了,输出Killed by the impact.否则是活的输出James Bond survives.
简单的物理题:假如说人能到地上那么是重力势能转化成动能,其中会有绳子做负功;
G=mgh;
Wf=k*L*L/2;其中L是形变量;k是绳子的劲度系数;
G-Wf = ek = m*v*v/2
#include<iostream> #include<algorithm> #include<stdio.h> #include<math.h> #include<string.h> #include<stdlib.h> using namespace std; #define g 9.81 int main() { double k, l, s, w, e, v; while(scanf("%lf%lf%lf%lf", &k, &l, &s, &w), k+l+s+w) { e = w*g*s; if(s>l) e=e-k*(s-l)*(s-l)/2; if(e<0) { printf("Stuck in the air. "); continue; } v=sqrt(2*e/w); if(v>10) printf("Killed by the impact. "); else printf("James Bond survives. "); } return 0; }