提供一下測試資料:
Input | Output |
25 12:00 10:09 07:51 06:22 10:35 01:25 02:30 03:36 00:01 06:00 05:59 07:00 11:00 00:00 11:59 11:24 00:06 09:00 01:00 11:00 11:01 06:01 23:24 12:01 13:05 | 12:00 01:51 04:09 05:38 01:25 10:35 09:30 08:24 11:59 06:00 06:01 05:00 01:00 12:00 12:01 12:36 11:54 03:00 11:00 01:00 12:59 05:59 12:36 11:59 10:55 |
我解題的步驟如下:( H 為時針, M 為分針)
1. 時針若大於 12,就要將 H 減掉 12。
if (H >= 12) H -= 12;
2. 如果時針為 12、分針為 0 或時針為 0、分針為 0,皆印出"12:00"。
if (H == 12 && M == 0 || H == 0 && M == 0) puts("12:00");
3. 如果情況若不為步驟 2,則跳入 else 內。而在上面測試資料若不是特殊情況下,時針鏡照後,H 會變成 12 - H - 1;而分針鏡照後會變成 60 - M。如此做完,M 等於 60,要將它歸 0,再將 H 加 1。若 H 為 0,要將它變成 12。
else此題上傳完也是 0.000 秒。
{
revH = (12 - H) - 1;
revM = 60 - M;
if (revM == 60) revM = 0, revH ++;
if (revH == 0) revH = 12;
printf("%02d:%02d\n", revH, revM);
}
By David.K
p11650題目連結
回ACM題庫目錄
回首頁
沒有留言:
張貼留言