#19276. 航海家的坐标
航海家的坐标
第一部分:背景知识讲解
本题结合了初中地理中的 “经纬网与定位” 知识,考察编程中的 模拟、边界处理以及循环修正。
1. 经度 (Longitude)与纬度 (Latitude)
地球表面被经线和纬线交织成网格,用来确定位置。为了编程简化,我们将其视为一个二维坐标系。
- 纬度 ():
- 以赤道为 。
- 向北为正(北纬),最高 (北极点)。
- 向南为负(南纬),最低 (南极点)。
- 边界规则:到达极点后,无法继续向北或向南移动(会被挡住)。
- 经度 ():
- 以本初子午线为 。
- 向东为正(东经),向西为负(西经)。
- 范围通常定义为 。即 经线是东西经的分界线。
- 循环规则:经度是可以循环的。
- 向东穿过 会变成
- 向西穿过 会变成
- 数学公式:如果坐标 超出范围,可以通过加减 来修正。
第二部分:题目内容
题目名称:航海家的坐标 (The Navigator's Coordinates)
题目描述
小杨是一名初出茅庐的航海家,他正驾驶着“探索号”帆船在广阔的太平洋上航行。
为了简化导航,我们将地球表面看作一个经纬度坐标系:
- 纬度 (Latitude) 用整数 表示,范围是 。
- 经度 (Longitude) 用整数 表示,范围是 。
小杨从起始坐标 出发,执行了 条航行指令。每条指令包含一个方向字符和一个整数距离(度数):
N:向北移动(纬度增加)。S:向南移动(纬度减小)。E:向东移动(经度增加)。W:向西移动(经度减小)。
移动规则如下:
- 纬度限制(极点阻挡):如果向北移动导致纬度超过 ,则船只会停在北极点();同理,向南移动最低只能停在南极点()。
- 经度循环(环球航行):
- 如果向东移动导致经度 ,则经度变为 。
- 如果向西移动导致经度 ,则经度变为 。
- 注意:经度可能会连续跨越多次。
请你编写程序,计算执行完所有指令后,小杨帆船的最终坐标 。
输入格式
第一行包含三个整数 。
- 表示指令数量。
- 表示起始纬度。
- 表示起始经度。
接下来 行,每行包含一个字符 和一个整数 。
- 为
N,S,E,W中的一个,表示方向。 - 表示移动的度数。
输出格式
输出一行,包含两个整数 和 ,用空格隔开,表示最终的纬度和经度。
输入输出样例 #1
输入:
3 0 170
E 20
N 100
E 10
输出:
90 -160
样例 #1 解释:
- 初始:。
- 指令
E 20:向东 20 度。经度 。- 因为 ,跨越日界线,经度变为 。
- 坐标变为 。
- 指令
N 100:向北 100 度。纬度 。- 因为 ,被北极点挡住,纬度变为 。
- 坐标变为 。
- 指令
E 10:向东 10 度。经度 。- 坐标变为 。
输入输出样例 #2
输入:
2 0 -170
W 20
S 100
输出:
-90 170
样例 #2 解释:
- 指令
W 20:向西 20 度。经度 。- 因为 ,修正为 。
- 坐标变为 。
- 指令
S 100:向南 100 度。纬度 。- 因为 ,被南极点挡住,纬度变为 。
- 坐标变为 。
数据范围
对于 的数据: