题目描述
新型冠状病毒疫情的肆虐,使得家在武汉的大壮不得不思考自己家和附近定点医院的具体情况。
经过一番调查,大壮明白了距离自己家最近的定点医院有两家。其中:
- 医院A和自己的距离是X公里
- 医院B和自己的距离是Y公里
由于武汉封城,公交停运,私家车不能上路,交通十分不便。现在:
- 到达医院A只能搭乘志愿者计程车,已知计程车的平均速度是M米/分钟,上车平均等待时间为L分钟。
- 到达医院B只能步行,平均速度是N米/分钟;
给出X,Y,M,L,N的数据,请问大壮到达哪家医院最快?
输入描述
一行,5个数。
分别是到达A医院的距离,到达B医院的距离,计程车平均速度,上车等待时间,步行速度。
输出描述
一行,计程车(Taxi)、步行(Walk)、相等(Same)
用例
输入 | 50 5 500 30 90 |
输出 | Walk |
说明 | 无 |
问题分析
-
题目理解:
- 需要计算大壮到两家医院的最快到达方式。
- 已知到两家医院的距离 XXX 和 YYY,乘坐出租车的平均速度 MMM 米/分钟,上车平均等待时间 LLL 分钟,步行速度 NNN 米/分钟。
- 需要判断乘坐出租车还是步行更快,或者二者时间相同。
-
输入描述:
- 一行,5个数,分别表示到达医院A的距离 XXX,到达医院B的距离 YYY,出租车平均速度 MMM,上车等待时间 LLL,步行速度 NNN。
-
输出描述:
- 输出一个字符串:表示选择的最快方式,可能值为 “Taxi”, “Walk” 或 “Same”。
-
解题思路:
- 计算出租车到达时间:出租车时间 = 上车等待时间 + (到达距离 / 出租车速度)
- 计算步行到达时间:步行时间 = 到达距离 / 步行速度
- 比较两种方式的时间:根据时间比较结果,输出最快方式。
C++ 代码
#include <iostream>
#include <cmath>
using namespace std;
int main() {
double X, Y, M, L, N;
cin >> X >> Y >> M >> L >> N;
double taxiTimeA = L + (X / M);
double walkTimeA = X / N;
double taxiTimeB = L + (Y / M);
double walkTimeB = Y / N;
if (taxiTimeA < walkTimeA && taxiTimeB < walkTimeB) {
cout << "Taxi" << endl;
} else if (taxiTimeA > walkTimeA && taxiTimeB > walkTimeB) {
cout << "Walk" << endl;
} else {
cout << "Same" << endl;
}
return 0;
}
Python 代码
def calculate_fastest_route(X, Y, M, L, N):
taxi_time_A = L + (X / M)
walk_time_A = X / N
taxi_time_B = L + (Y / M)
walk_time_B = Y / N
if taxi_time_A < walk_time_A and taxi_time_B < walk_time_B:
return "Taxi"
elif taxi_time_A > walk_time_A and taxi_time_B > walk_time_B:
return "Walk"
else:
return "Same"
if __name__ == "__main__":
X, Y, M, L, N = map(float, input().split())
print(calculate_fastest_route(X, Y, M, L, N))
运行示例
假设输入如下:
50 50 500 30 90
运行上述程序可以得到输出:
Walk
这表示步行到达医院比乘坐出租车更快。