hnuoj10016

问题描述
你是一个勇敢的二维探索者,位于一个遥远的二维星球的北极。不幸的是,你被分配去探索已知宇宙中最无聊的星球(主要是因为你缺乏社交技能和好斗的体味)。你的星球有着完美的圆形表面,对于一个想要探索的人来说不会有任何惊喜。
然而,你最近收到了一个来自外星飞船的求救信号,它迫降在你星球表面的某个地方。不幸的是,你设计了自己的设备,它提供的唯一信息是你与坠机地点之间的角度(从地球中心测量)。

利用这些信息以及你的行星漫游者可用的汽油数量(每加仑汽油只能跑5英里),你必须确定你是否可能在不耗尽燃料的情况下到达坠机地点并返回。


输入
这个问题的输入将由多达100个数据集的(非空)系列组成。每个数据集将按照下面的描述进行格式化,数据集之间不会有空行。单个数据集有3个组成部分:
开始行-一行,“Start”。
输入行——一行,“X Y Z”,其中:
X:(1 <= X <= 100)是地球半径的整数英里
Y:(0 <= Y <= 100)是你的行星漫游者的汽油量,单位是整加仑
Z:(0 <= Z <= 360)是你和坠机地点之间的一个整数度角

结束行——一行,“End”。
在最终数据集之后将是一行,“ENDOFINPUT”。
请注意以下几点:
用半径r表示的圆的周长是2πr
假设π = 3.14159

输出
对于每个数据集,只有一行输出。如果你有足够的燃料到达坠机地点并返回,这一行将会显示为“YES X”,其中X是你将剩下的燃料量,以加仑数的整数表示(截断任何小数加仑)。如果你没有足够的燃料,这一行将显示为“NO Y”,其中Y是你可以行驶的里程数的整数。

样例输入
开始
1 100 0
结束
开始
10 0 1
结束
开始
100 50 90
结束
开始
100 50 270
结束
ENDOFINPUT
样例输出
是的,100
没有0
250号
250号
问题的来源
2002年美国中南部

问题分析 :

其实就是一个很简单的按照简单关系计算出值然后比大小的一个问题而已。

#include<iostream>
#include<string.h>

using namespace std;

#define PI 3.14159

int main()
{
    int x, y, z;
    char a[11];

    while (cin >> a && !strcmp(a,"START"))
    {
        double distance;

        cin >> x >> y >> z;
        if (z <= 180)
        {
            distance = 2 * 2 * PI*x*z / 360;
        }
        else
        {
            distance = 2 * 2 * PI*x*(360 - z) / 360;
        }

        if (y >= distance / 5)
        {
            cout << "YES" << " " << (int)(y - distance / 5) << endl;
        }
        else
        {
            cout << "NO" << " " << 5 * y << endl;
        }

        cin >> a;
    }

    return 0;
}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值