前往
大廳
主題

ZeroJudge - f709: 12019 - Doom's Day Algorithm 解題心得

Not In My Back Yard | 2021-03-26 00:00:01 | 巴幣 0 | 人氣 507

題目連結:


題目大意:
輸入第一列給定一正整數 T (T ≦ 100),代表有 T 筆測試資料,每筆佔一列。每列給定兩正整數 M 、 D (1 ≦ M ≦ 12 , 1 ≦ D ≦ 31),代表 2011 年中的某一天(保證日期合法)。

試問給定的 2011 年之日期為星期幾?



範例輸入:
9
1 6
2 28
4 5
5 26
8 1
11 1
12 25
12 31
3 9


範例輸出:
Thursday
Monday
Tuesday
Thursday
Monday
Tuesday
Sunday
Saturday
Wednesday


解題思維:
我們可以直接計算 1 / 1 到給定的日期有幾天(假設經過了 P 天(含 1 / 1 以及目標日期本身))。

而且我們知道 2011 / 1 / 1 是禮拜六(Saturday,可以從範例輸出入中推測出來),因此我們便可以快速地得知給定的日期之星期,如下:

假設各個星期存於陣列 W[7] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" } 之中,則所求即
W[(P + 5) % 7]
其中,「%」運算子代表著取某數的餘數,即模(Modulo)之操作。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作