切換
舊版
前往
大廳
主題

ZeroJudge - e923: pB. ISO日曆系統(二) 解題心得

Not In My Back Yard | 2020-03-22 00:15:18 | 巴幣 0 | 人氣 156

題目連結:


題目大意:
延續昨天題目對於「週數」的定義。

現第一列給定一正整數 N (1 ≦ N ≦ 365),代表接著有 N 列輸入。每列給定三正整數 W 、 M 、 D (1 ≦ W ≦ 7 , 1 ≦ M ≦ 12 , 1 ≦ D ≦ 31),代表今年 1 月 1 日為星期 W (數字 7 代表星期天),試問同年的 M 月 D 日屬於該年第幾週(即週數)並且計算該天應為星期幾?

如果屬於去年最後一週,則週數的輸出「-1」;如果屬於下一年的第一週,則週數的輸出「1」。輸出格式參見範例輸出。



範例輸入:
4
1 1 1
4 1 1
5 1 1
3 12 31


範例輸出:
1 1
1 4
-1 5
53 3


解題思維:
雖然題目是給定 1 月 1 日的星期,但是根據定義該日不一定在第一週裡。因此本人是挑 1 月 4 日作為基準點(必屬於第一週),然後可以特別找出該週的星期一作為最後所挑選的基準。

M 月 D 日星期的計算非常簡單,就是單純計算與第一週星期一(或者其他的基準日)之間的天數差距,然後看看除以 7 的餘數就知道是星期幾。

接著是週數的計算,也單純是找到與基準日的天數差距 ÷ 7 就知道了。如果日期在第一週之前則輸出「-1」,代表該日期屬於去年最後一週;如果得到該週為第 54 週,則代表應為下一年的第 1 週,因此應輸出「1」。

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

創作回應

更多創作