POJ2463-Bungee Jumping-物理题

题目链接

POJ2463


题意

一个人逃跑要从天桥上跳下去。他有一根绳子。已知绳子长度,劲度系数,天桥高度,人的重量,重力加速度,问你这个人跳下去会是什么情况。

如果不能着地则输出”Stuck in the air.”
如果他着地时的速度大于10m/s,他死了输出”Killed by the impact.”
否则他获救了输出”James Bond survives.”


题解

通过重力势能和弹性势能之间的关系判断

第一种情况:l >= s 绳长大于桥高
说明一定会着地,且只有重力做功.只需要判断着地的v即可
v = sqrt(2*g*s)

第二种情况:l < s:绳长小于桥高
说明绳子的弹力做了功,需要考虑弹性势能
重力势能f1 = w*g*s;
弹性势能f2 = 1/2*k*(s-l)*(s-l);
如果 f1 < f2 :则不能着地,悬在空中
否则 判断着地时v是否大于10m/s [ v = sqrt((f1-f2)*2/m) ]


代码

    /**
        一个人逃跑要从天桥上跳下去。他有一根绳子。已知绳子长度,劲度系数,天桥高度,人的重量,重力加速度,
        问你这个人跳下去会是什么情况。


    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    const double g = 9.81;
    int main()
    {
        double k,l,s,w;
        while(~scanf("%lf%lf%lf%lf",&k,&l,&s,&w),k+l+s+w)
        {
            if(l>=s) ///如果绳长大于桥的高度
            {
                double v = sqrt(2*g*s);
                if(v > 10) cout<<"Killed by the impact."<<endl;
                else cout<<"James Bond survives."<<endl;
            }
            else {
                double f1 = w*g*s,f2=0.5*k*(s-l)*(s-l);
                if(f1 < f2) cout<<"Stuck in the air."<<endl;
                else {
                    double v = sqrt((f1-f2)*2/w);
                    if(v > 10) cout<<"Killed by the impact."<<endl;
                    else cout<<"James Bond survives."<<endl;
                }
            }
        }
        return 0;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值