熱門文章

2025年4月3日 星期四

ZeroJudge 解題筆記:h659. 計程車 (Taxi)

作者:王一哲
日期:2025年4月3日



ZeroJudge 題目連結:h659. 計程車 (Taxi)

解題想法


按照題目敘述的標準計算費用即可,不需要複雜的寫法。

Python 程式碼


使用時間約為 19 ms,記憶體約為 3.3 MB,通過測試。
import sys

for line in sys.stdin:
    # 行駛總公里數、車輛延滯時間 (min)、上車及下車的時刻 (hr)
    k, w, s, e = map(int, line.split())
    fee = 0  # 費用
    # 計算行駛總公里數産生的費用
    if k <= 2: fee += 20  # 2 km 以內 20 元
    else: fee += 20 + (k-2)*5  # 超過 2 km 加錢 5 元/km
    # 計算車輛延滯時間産生的費用
    fee += w//2*5  # 每滿 2 min 加 5 元
    # 計算夜間加成産生的費用
    if s <= 18 and e >= 19: fee += 185  # 橫跨 18 ~ 19 時,加 185 元
    if s <= 19 and e >= 20: fee += 195  # 橫跨 19 ~ 20 時,加 195 元
    if s <= 20 and e >= 21: fee += 205  # 橫跨 20 ~ 21 時,加 205 元
    if s <= 21 and e >= 22: fee += 215  # 橫跨 21 ~ 22 時,加 215 元
    if s <= 22 and e >= 23: fee += 225  # 橫跨 22 ~ 23 時,加 225 元
    print(fee)  # 印出答案


C++ 程式碼


使用時間約為 2 ms,記憶體約為 88 kB,通過測試。
#include <cstdio>
using namespace std;

int main() {
    // 行駛總公里數、車輛延滯時間 (min)、上車及下車的時刻 (hr)
    int k, w, s, e;
    while(scanf("%d %d %d %d", &k, &w, &s, &e) != EOF) {
        int fee = 0;  // 費用
        // 計算行駛總公里數産生的費用
        if (k <= 2) fee += 20;  // 2 km 以內 20 元
        else fee += 20 + (k-2)*5;  // 超過 2 km 加錢 5 元/km
        // 計算車輛延滯時間産生的費用
        fee += w/2*5;  // 每滿 2 min 加 5 元
        // 計算夜間加成産生的費用
        if (s <= 18 && e >= 19) fee += 185;  // 橫跨 18 ~ 19 時,加 185 元
        if (s <= 19 && e >= 20) fee += 195;  // 橫跨 19 ~ 20 時,加 195 元
        if (s <= 20 && e >= 21) fee += 205;  // 橫跨 20 ~ 21 時,加 205 元
        if (s <= 21 && e >= 22) fee += 215;  // 橫跨 21 ~ 22 時,加 215 元
        if (s <= 22 && e >= 23) fee += 225;  // 橫跨 22 ~ 23 時,加 225 元
        printf("%d\n", fee);  // 印出答案
    }
    return 0;
}


沒有留言:

張貼留言