问题 E: 极地探险家1982

题目描述

你是一个勇敢的二维探险家,来自一个遥远的二维行星的北极地。不幸的是,你被指派去探索已知宇宙中最无聊的星球(主要是由于你缺乏社交技巧还有侵略性体臭)。 这个星球拥有完美的圆形表面,对于一个勇敢的探险家来说并不会有任何意外。
然而,你最近收到了一艘外星飞船发出求救信号,这艘飞机坠毁在星球表面的某处。不幸的是,你自己设计的设备,它只能给你的一个信息,是一个你所在的位置和坠机地点到星球中心的连线所在的夹角角度(从行星的中心测量)。
使用这些信息以及你的行星探测器有多少汽油(每加仑行驶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是你可以行驶的距离,以整数英里数表示。

样例输入

START
1 100 0
END
START
10 0 1
END
START
100 50 90
END
START
100 50 270
END
ENDOFINPUT

样例输出

YES 100
NO 0
NO 250
NO 250

补题的时候才发现这题对格式要求不高…计算的没问题就行QAQ

注意z>180时z=360-z即可

#include <stdio.h>
#include <string.h>

int main() {
	int count = 1;
	while (count <= 100) {
		char a[1000];
		char begin[10] = "START";
		char end[10] = "END";
		char stop[11] = "ENDOFINPUT";
		scanf("%s", a);
		if (strcmp(a, stop) == 0) {
			return 0;
		}
		if (strcmp(a, begin) == 0) {
			int x, y, z;
			scanf("%d%d%d", &x, &y, &z);
			if (z > 180) {
				z = 360 - z;
			}
			float ms = (float)5 * y;
			float c = (float)2 * 3.14159 * x;
			float s = 2.0 * (z * 1.0 / 360) * c;
			if (ms >= s) {
				int fw = (int)(ms - s) / 5;
				printf("YES %d\n", fw);
			} else {
				printf("NO %g\n", ms);
			}
			char b[100];
			scanf("%s", b);
			count++;
		}
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值