2010年5月11日 星期二

Problem 11650 Mirror Clock,鏡照時間

此題為簡單題,輸入一合理時間,將時間如同鏡照後輸出時間。

提供一下測試資料:
InputOutput
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
{
revH = (12 - H) - 1;
revM = 60 - M;
if (revM == 60) revM = 0, revH ++;
if (revH == 0) revH = 12;
printf("%02d:%02d\n", revH, revM);
}
此題上傳完也是 0.000 秒。

By David.K

p11650題目連結
回ACM題庫目錄
回首頁

沒有留言: