2024华为OD试题及答案-A062-最快到达医院的方法

题目描述

新型冠状病毒疫情的肆虐,使得家在武汉的大壮不得不思考自己家和附近定点医院的具体情况。

经过一番调查,大壮明白了距离自己家最近的定点医院有两家。其中:

  • 医院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
说明

问题分析

  1. 题目理解

    • 需要计算大壮到两家医院的最快到达方式。
    • 已知到两家医院的距离 XXX 和 YYY,乘坐出租车的平均速度 MMM 米/分钟,上车平均等待时间 LLL 分钟,步行速度 NNN 米/分钟。
    • 需要判断乘坐出租车还是步行更快,或者二者时间相同。
  2. 输入描述

    • 一行,5个数,分别表示到达医院A的距离 XXX,到达医院B的距离 YYY,出租车平均速度 MMM,上车等待时间 LLL,步行速度 NNN。
  3. 输出描述

    • 输出一个字符串:表示选择的最快方式,可能值为 “Taxi”, “Walk” 或 “Same”。
  4. 解题思路

    • 计算出租车到达时间:出租车时间 = 上车等待时间 + (到达距离 / 出租车速度)
    • 计算步行到达时间:步行时间 = 到达距离 / 步行速度
    • 比较两种方式的时间:根据时间比较结果,输出最快方式。

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

这表示步行到达医院比乘坐出租车更快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值