結果
問題 | No.87 Advent Calendar Problem |
ユーザー |
|
提出日時 | 2025-05-10 18:49:57 |
言語 | D (dmd 2.109.1) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 765 bytes |
コンパイル時間 | 3,999 ms |
コンパイル使用メモリ | 158,592 KB |
実行使用メモリ | 6,272 KB |
最終ジャッジ日時 | 2025-05-10 18:50:04 |
合計ジャッジ時間 | 5,323 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 24 |
ソースコード
module main; // https://ja.wikipedia.org/wiki/ツェラーの公式 より // https://tokyoaccent.com/calendar/retro.htm より import std; void main() { // 入力 auto N = readln.chomp.to!long; // 答えの計算と出力 // y年7月23日の曜日(0:日曜日 ~ 6:土曜日) long zeller(long y) { return (y + y / 4 - y / 100 + y / 400 + (13 * 7 + 8) / 5 + 23) % 7; } // 2014年7月23日の曜日 long d0 = zeller(2014); // 2015年を1年目として、1年目から400年目までに7月23日が水曜日になる日が何日あるか auto arr = new long[](401); long d = 0; foreach (y; 1 .. 401) { if (zeller(y + 2014) == d0) d++; arr[y] = d; } long Q = (N - 2015) / 400L; int R = (N - 2015) % 400 + 1; writeln(Q * arr[400] + arr[R]); }