HDU 1155 Bungee Jumping 物理

题目大意:给出k:绳子的劲度系数,l:绳长,s:桥高,w:邦德的质量,g取9.81。绳子弹力=形变量*劲度系数。如果落地速度大于10 则摔死,小于0则飘着空中。

题目思路:根据能量守恒得知:落地的动能=重力势能减少量-绳子弹力做功。如果l>s,则绳子不做功。

#include<cstdio>
#include<stdio.h>
#include<cstdlib>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#define INF 0x3f3f3f3f
#define MAX 1000005

using namespace std;

int main()
{
    double k,l,s,w,we,g=9.81,v;//we为落地式的动能
    while(scanf("%lf%lf%lf%lf",&k,&l,&s,&w),k+l+s+w)
    {
        if(l > s)//如果绳子大于桥的高度绳子的弹力不会做功,落地时动能增量等于重力势能的减少量
        {
             v=sqrt(2*g*s);
        }
        else//否则,落地时的动能等于重力势能的减少量-绳子弹力做功。绳子的平均弹力=平均形变量*k
        {
            we=w*g*s - ((s-l)/2.0)*(s-l)*k;
            if(we < 0)//若果落地动能小于0,肯定在落地前速度就为0了,也就飘着了半空中
            {
                printf("Stuck in the air.\n");
                continue;
            }
            v=sqrt((we*2)/w);
        }


        if(v > 10)
            printf("Killed by the impact.\n");
        else
            printf("James Bond survives.\n");
    }
    return 0;
}
View Code

 

posted @ 2016-08-13 22:46  声声醉如兰  阅读(183)  评论(0编辑  收藏  举报