17235 Minecraft是个好游戏[C]

来源:互联网 发布:win7桌面添加网络连接 编辑:程序博客网 时间:2024/04/25 12:48

17235 Minecraft是个好游戏

时间限制:1000MS  内存限制:65535K
提交次数:50 通过次数:16 收入:25

题型: 编程题   语言: C++;C

Description

Minecraft是一个颠覆性的高自由度游戏,其中文译名叫“我的世界”。之所以会有如此译名,原因在于这个游戏就像一个沙盒世界,玩家就像是个创世神一般。其颠覆性在于它不同于以往那些游戏“要你做去什么”,相反的,是由玩家去思考“我要做什么”。说了这么一段,你们是不是很想上网搜一搜怎么玩呢?不过玩之前麻烦先帮Lrc解决一个问题。这个游戏里面是可以制作逻辑电路的,通过简单的搭建,玩家可以制作出一个简单的TNT大炮。假设现在Lrc想使用大炮轰地面上炸距离自己s米处的目标,大炮的发射仰角为A(单位角度),炮弹的初速度为v米/秒,TNT在发出后t秒爆炸,爆炸半径为r米(当目标到爆炸点的距离<=r时即视为击中),炸药落地后不反弹。重力加速度取10m/s^2。问:Lrc能否击中目标?PS:目标与Lrc于同一平面。



输入格式

输入包括5个实数,分别为s(s>0),A(0<A<90),v(v>0),t(t>0),r(r>0),之间用空格分割。


输出格式

输出一行,若能击中目标,输出“nice!”(不包含引号),否则输出“T^T”(不包含引号)。


输入样例

9 30 10 1 0.5


输出样例

nice!


来源

lyric_seraph

作者

201131001114


思路:本题分两种情况,一是落地时过一段时间爆炸;而是在飞行过程中爆炸,但仍有可能炸到目标。

根据物理求出水平速度、垂直速度、飞行时间,以爆炸中心为圆点,求圆点和目标的距离是否小于半径。


代码

#include <stdio.h>#include <math.h>int main(){//    freopen("input.txt","r",stdin);//    freopen("output.txt","w",stdout);    double s,a,v,t,r;    double x1,x2,h2,t1,g=10,vx,vy;    scanf("%lf%lf%lf%lf%lf",&s,&a,&v,&t,&r);    vx=v*cos(a*M_PI/180);    vy=v*sin(a*M_PI/180);    t1=2*vy/g;//物理学求飞行时间    x1=vx*t1;//落地爆炸时,水平飞行距离    h2=vy*t-g*t*t/2;    x2=vx*t;//空中爆炸时,水平飞行距离    if(t1<=t)    {        if(fabs(x1-s)<=r)        {            printf("nice!\n");        }        else        {            printf("T^T\n");        }    }    else    {        if((x2-s)*(x2-s)+h2*h2<=r*r)        {            printf("nice!\n");        }        else        {            printf("T^T\n");        }    }    return 0;}



0 0