2025年9月16日 星期二

ZeroJudge 解題筆記:d985. Gran Turismo 5

作者:王一哲
日期:2025年9月16日


ZeroJudge 題目連結:d985. Gran Turismo 5

解題想法


依序讀取每一圈的時間,將單位換成 s,更新最短秒數、計算總秒數,最後輸出所有圈數的最短秒數及平均。

Python 程式碼


使用時間約為 18 ms,記憶體約為 3.3 MB,通過測試。
track = 0  # 圈數
N = int(input())  # N 組測資
for _ in range(N):  # 執行 N 次
    track += 1  # 圈數加 1
    print(f"Track {track:d}:")
    M = int(input())  # M 行資料
    best = float('inf')  # 最短秒數
    total = 0  # 總秒數
    for _ in range(M):  # 執行 M 次
        m, s = map(int, input().split())  # 單圈時間 m's"
        t = m*60 + s  # 換成秒數
        best = min(best, t)  # 新的最短秒數
        total += t  # 更新總秒數
    average = total // M  # 平均值
    print(f"Best Lap: {best//60:d} minute(s) {best%60:d} second(s).")
    print(f"Average: {average//60:d} minute(s) {average%60:d} second(s).")
    print()


C++ 程式碼


使用時間約為 2 ms,記憶體約為 72 kB,通過測試。
#include <cstdio>

int main() {
    int N; scanf("%d", &N);  // N 組測資
    for(int i=1; i<=N; i++) {  // 執行 N 次
        printf("Track %d:\n", i);
        int M; scanf("%d", &M);  // M 行資料
        int best = 1000000, total = 0;  // 最短秒數,總秒數
        for(int j=0; j<M; j++) {  // 執行 M 次
            int m, s; scanf("%d %d", &m, &s);  // 單圈時間 m's"
            int t = m*60 + s;  // 換成秒數
            if (t < best) best = t;  // 新的最短秒數
            total += t;  // 更新總秒數
        }
        int average = total / M;  // 平均值
        printf("Best Lap: %d minute(s) %d second(s).\n", best/60, best%60);
        printf("Average: %d minute(s) %d second(s).\n", average/60, average%60);
        puts("");
    }
    return 0;
}


沒有留言:

張貼留言