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