【題目敘述】https://zerojudge.tw/ShowProblem?problemid=d048
【解題想法】
- 把時間HH:MM換算成分鐘,就不用費心考慮二十四小時制的進位問題。
- 接著從現在時間每次加上一分鐘,然後檢查是否符合題目的迴文定義。當時間大於23:59,變成00:00。
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int T, hh, mm;
string s;
cin >> T;
while (T--){
cin >> s;
int minute = (s[0] - '0') * 600 + (s[1] - '0') * 60 + (s[3] - '0') * 10 + (s[4] - '0');
while (1){
minute++;
if (minute >= 1440) minute = 0;
hh = minute / 60;
mm = minute % 60;
if (hh == 0){
if (mm < 10 || (mm / 10 == mm % 10)){
break;
}
} else if (hh < 10){
if (hh == mm % 10){
break;
}
} else {
if ((hh/10 == mm%10) && (hh%10 == mm/10)){
break;
}
}
}
cout << setw(2) << setfill('0') << hh << ":"
<< setw(2) << setfill('0') << mm << "\n";
}
}