日付セット】> 曜日(large) (paizaランク B 相当) [難易度: 1850 ±26]

※リンク先へ移動するためには[paiza]へのログインが必要です。

問題文

西暦y年m月d日が何曜日か表示してください。

ただし、各月の日数は以下のように決まることに注意してください。
・4, 6, 9, 11月は30日
・2月は閏年ならば29日、そうでなければ28日
・それ以外の月は31日

ただし、閏年は次のような年のことをいいます。
・西暦が4で割り切れる年は閏年
・ただし、100で割り切れる年は平年
・ただし、400で割り切れる年は閏年

ただし、1800年1月1日は水曜日です。

参考: ツェラーの公式#フェアフィールドの公式

入力値(例)
2019 4 9

出力値(例)
火曜日

解答例

別解

YouTubeの問題解説動画(https://www.youtube.com/watch?v=492L9rE95uo)からPHPに書き起こしました。PHPだとlong型が使えないので、タイムオーバー回避を使っています。

おすすめの記事
スポンサーリンク