1 条题解
-
1
【2020年省赛B组】试题D: 跑步锻炼
题解
答案为:
8879
简单模拟题。
主要解决两个问题:
- 是否为月初
- 是否是周天
我们可以枚举从2000年1月1日到2020年10月1日的所有日期: 用分别表示当前枚举的年,月和日, 那么当为月初,否则不为月初。问题1解决。
同时我们定义表示当前日期所对应的日期, 这样下一个日期所对应的日期就为。当时为周一,否则不为周一。问题2解决。 最后模拟一下即可(注意判断闰年),答案为
8879
。#include<bits/stdc++.h> using namespace std; int D[13]; bool check(int y){ if(y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) return true; return false; } signed main() { D[1] = 31 , D[2] = 28 , D[3] = 31 , D[4] = 30 , D[5] = 31 , D[6] = 30; D[7] = 31 , D[8] = 31 , D[9] = 30 , D[10] = 31 , D[11] = 30 , D[12] = 31; int ans = 0 , week = 6; for(int y = 2000 ; y <= 2020 ; y ++){ if(check(y)) D[2] = 29; else D[2] = 28; for(int m = 1 ; m <= (y == 2020 ? 10 : 12) ; m ++){ if(y == 2020 && m == 10) D[m] = 1; for(int d = 1 ; d <= D[m] ; d ++){ if(week == 1 || d == 1) ans += 2; else ans += 1; week = (week + 1) % 7; } } } cout << ans << '\n'; return 0; }
- 1
信息
- ID
- 999
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 13
- 已通过
- 7
- 上传者