日期: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;
}
沒有留言:
張貼留言