ACM复习(54)17235 Minecraft是个好游戏

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!


解题思路

高中物理

此题解抄自 八月号 ,因为懒得找高中物理公式懒得算。。
ps : 第一次发表博文的时候明明有注明出处的,后面再看居然没了。。我的锅我的锅

#include <stdio.h>
#include <math.h>
int main()
{
    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;  
    x2 = vx * t;

    // 还未落地就爆炸时的高度 
    h2 = vy * t - g * t * t / 2;

    // 落地前爆炸 
    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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值