#42043: 解題報告:判斷是否能及時取回遺忘物


z2005x (Huffman)

學校 : 海洋大學
編號 : 68147
來源 : [111.125.132.144]
最後登入時間 :
2024-11-09 16:10:50
a003. 兩光法師占卜術 | From: [220.138.126.131] | 發表日期 : 2024-09-22 11:57

 

這是一個典型的時間計算問題,根據 Jack 當前時間、巴士出發時間,還有他取回物品的所需時間,來決定是否能夠趕得上巴士。

題目解析

題目提供了以下信息:

  • 現在的時間(H1 M1)。
  • 巴士出發的時間(H2 M2)。
  • Jack 需要回到電腦教室並趕回車站所需的時間 M3(以分鐘計算)。

我們的目標是:

  1. 計算現在的時間距離巴士出發還有多少分鐘。
  2. 如果 Jack 回去取東西所需的時間 M3 小於等於剩餘時間,他就能趕得上巴士,我們輸出 "Yes";否則輸出 "No"。

解題思路

  1. 時間轉換: 時間以小時和分鐘給出,因此我們需要將它們轉換成以分鐘為單位進行計算。將當前時間和巴士出發時間轉換為 "從零點到目前的分鐘數",計算出它們之間的差距。

  2. 時間差計算: 將巴士出發的時間和當前時間都轉換為分鐘後,只需要計算出它們之間的差值,並與 Jack 回到電腦教室的時間進行比較。

  3. 處理跨天問題: 雖然題目說明不會跨日,但如果巴士的時間比當前時間還早(例如,當前時間為 23:59,巴士時間為 00:10),需要處理這種情況,即將巴士時間視作下一天的時間。

演算法步驟

  1. 輸入測試的行數 N。
  2. 對於每一組測試資料:
    • 讀取當前時間 H1, M1。
    • 讀取巴士出發時間 H2, M2。
    • 讀取 Jack 取回東西的時間 M3。
  3. 計算從零點開始到當前時間和巴士出發時間的總分鐘數。
  4. 計算當前時間和巴士出發時間的差距。
  5. 比較剩餘的時間與取回東西的時間 M3,並輸出結果。

程式架構

  1. 輸入處理

    • 讀取 N,代表有多少筆測試資料。
    • 每一組測試資料,分別讀取當前時間、巴士出發時間及 Jack 回去取東西的時間。
  2. 分鐘轉換

    • 將小時和分鐘轉換為總分鐘數: 總分鐘 = 小時 * 60 + 分鐘
  3. 剩餘時間計算

    • 若巴士出發的時間大於或等於當前時間,直接相減即可。
    • 若巴士時間小於當前時間,需考慮這種跨天情況,因此巴士時間視作下一天的時間,即 巴士總分鐘數 + 24 * 60
  4. 比較與輸出

    • 將剩餘時間與 M3 進行比較,若剩餘時間大於等於 M3,輸出 "Yes",否則輸出 "No"。

可能遇到的問題

  1. 跨天處理: 在一些情況下,巴士出發時間會比當前時間小,這就需要我們將巴士出發的時間視作下一天的某個時間點。

  2. 時間單位不匹配: 要注意所有時間單位必須統一轉換成分鐘來進行計算,否則可能會出現不正確的判斷。

小結

本題的關鍵在於對時間的轉換和跨天情況的處理。經過詳細的計算和比較,我們可以準確判斷 Jack 是否能夠在時間內回到巴士站。這類問題常見於考試中,對於時間的處理方式掌握良好後,許多類似問題都可以輕鬆解決。

透過這次解題,我們學會了如何處理不同格式的時間,並使用簡單的算法進行計算與比較。

 
ZeroJudge Forum