結果

問題 No.87 Advent Calendar Problem
コンテスト
ユーザー HiroakiSoftware
提出日時 2014-12-07 00:21:58
言語 C++11
(gcc 15.2.0 + boost 1.90.0)
コンパイル:
g++-15 -O2 -lm -std=gnu++11 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
WA  
実行時間 -
コード長 1,157 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 110 ms
コンパイル使用メモリ 40,576 KB
実行使用メモリ 5,888 KB
最終ジャッジ日時 2026-07-25 13:55:11
合計ジャッジ時間 18,609 ms
ジャッジサーバーID
(参考情報)
judge1_0 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other WA * 10 TLE * 1 -- * 13
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

//yukicoder87
//作成者:ヒロソフ
//2014年7月23日と同じ曜日(水曜日)となる回数を求めよ
#include <stdio.h>

#define START_YEAR 2015
#define TARGET_MONTH 7
#define TARGET_DAY 23

int GetMJD(int year, int month, int day);
int GetDayOfWeekByMJD(int mjd);

int main(void) {

	//ターゲットの曜日を示す値(水曜日が0なので注意)
	int TargetDayofWeek = GetDayOfWeekByMJD(GetMJD(2014, TARGET_MONTH, TARGET_DAY));

	int EndYear;
	int count = 0;
	scanf("%d", &EndYear);

	for (int i = START_YEAR; i <= EndYear; i++) {
		if (GetDayOfWeekByMJD(GetMJD(i, TARGET_MONTH, TARGET_DAY)) == TargetDayofWeek) {
			count++;
		}
	}

	printf("%d\n", count);
	return 0;
}

/*
	フリーゲルの公式で修正ユリウス日に変換
*/
int GetMJD(int year, int month, int day) {

	if (month <= 2) {
		year--;
		month += 12;
	}

	int ret;

	ret = (int)(365.25 * year);
	ret += year / 400;
	ret -= year / 100;
	ret += (int)(30.59 * (month - 2)) + day;
	ret -= 678912;

	return ret;
}

int GetDayOfWeekByMJD(int mjd) {
	int ret = mjd % 7;
	if (ret < 0) ret += 7;
	return ret;
}
0