題目敘述
本題採EOF方式收資料,每筆資料有四個正整數分別代表目前的時間和鬧鐘會響的的時間 (小時和分鐘),當四個數字都等於0時停止收資料。要求輸出介於目前的時間和鬧鐘設定的時間相差幾分鐘,有些資料會換日。
範例輸入 #1
1 5 3 5
23 59 0 34
21 33 21 10
0 0 0 0
範例輸出 #1
120
35
1417
解題思路
可以將兩個時間都換算成最小的單位 (分鐘) ,當目前的時間大於鬧鐘的時間的時候代表會換日,所以鬧鐘的時間要加一天 (24*60) ,最後輸出鬧鐘的分鐘數減掉目前時間的分鐘數即可。
解題程式碼如下 (僅供參考):
#include <iostream>
using namespace std;
int main() {
int h1, m1, h2, m2;
while (cin >> h1 >> m1 >> h2 >> m2)
{
if (h1 == 0 && m1 == 0 && h2 == 0 && m2 == 0) break;
int one, two;
if (h1 == 0) one = (24*60) + m1;
else one = (60*h1) + m1;
if (h2 == 0) two = (24*60) + m2;
else two = (60*h2) + m2;
if (two < one) two += (60*24);
cout << two - one << "\n";
}
}
留言
張貼留言