#include #include using namespace std; typedef long long ll; /* 現実の 2015/07/23 は木曜日 日月火水木金土の順に0~6まで数字を振る */ bool is_leap(int y){ if(y % 400 == 0)return true; if(y % 100 == 0)return false; if(y % 4 == 0)return true; return false; } int pr[400][7]; int store[3000]; ll solve(ll N){ memset(pr, -1, sizeof(pr)); int sz = 0; int st = -1; int w = 4; for(int y=2015;y<=N;y++){ int m = y % 400; if(pr[m][w] != -1){ st = pr[m][w]; break; } else { pr[m][w] = sz; store[sz] = (w == 3); ++sz; } if(is_leap(y + 1)){ w = (w + 366) % 7; } else { w = (w + 365) % 7; } } ll res = 0; if(st == -1){ for(int i=0;i> N; cout << solve(N) << endl; return 0; }