hdu1155

这题的意思是给你一根绳子,可收缩,告诉你跳下时候的高度,看会不会安全到地上,或是被吊在空中,或是被摔死。

 


#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;

int main()
{
    float k, l, s, m;
    while(scanf("%f%f%f%f", &k, &l, &s, &m) != EOF && k+l+s+m)
    {
        //如果绳子的长度大于桥的高度,肯定不会被吊在空中,只会安全着陆,或是被摔死。
        if(l >= s)
        {
            if(sqrt(2 * 9.81 * s) > 10) //根据动能定理,求出到达地面时候的速度v = sqrt(2gh),速度大于10,被摔死
            {
                puts("Killed by the impact.");
                continue;
            }
            else    //没被摔死
            {
                puts("James Bond survives.");
                continue;
            }
        }
        else    //绳子长度小于桥的高度,各种情况都会发生
        {
            float v = sqrt(2 * 9.81 * l); //绳子完全展开但是还没有伸长量的时候的速度v
            float mgl = m * 9.81 * l;
            double a = k, b = -2 * m * 9.81, c = -2 * mgl;
            double x = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
            if(l + x < s)   //当人的合外力做功全部转化成绳子的弹性势能时,也就是绳子已经不能再被拉长了
            {//这个时候人还没有到达地面的话,就要被一直吊在空中了。。。
                puts("Stuck in the air.");
                continue;
            }
            //人如果到达地面了,就要判断到达地面时候的速度是否大于10.
            //此时绳子伸长量s-l,弹性势能为0.5k(s-l)^2,
            //设到达地面的速度为v0, 根据动能定理,有合外力做功等于动能增量,所以
            //0.5mv0^2 - 0.5mv^2 = mg(s-l) - 0.5k(s-l)^2
            float temp = m * 9.81 * (s - l) - 0.5 * k * (s - l) * (s - l) + 0.5 * m * v * v;
            float v0 = sqrt(2 * temp / m);
            if(v0 > 10) //还是被摔死了
            {
                puts("Killed by the impact.");
                continue;
            }
            else//捡回一条命
            {
                puts("James Bond survives.");
                continue;
            }
        }
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值