結果
| 問題 |
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]);
}