蓝桥杯 ADV-127 日期计算
问题描述
已知2011年11月11日是星期五,问YYYY年MM月DD日是星期几?注意考虑闰年的情况。尤其是逢百年不闰,逢400年闰的情况。
输入格式
输入只有一行
YYYY MM DD
输出格式
输出只有一行
W
样例输入
2011 11 11
样例输出
5
数据规模和约定
1599 <= YYYY <= 2999 1 <= MM <= 12 1 <= DD <= 31,且确保测试样例中YYYY年MM月DD日是一个合理日期 1 <= W <= 7,分别代表周一到周日
思路解析
-
将情况分为三种:
- 输入日期恰好为2011-11-11
- 输入日期在2011-11-11之后
- 输入日期在2011-11-11之前
注意边界的处理,理清关系即可。
#include <iostream>
using namespace std;
// 判断指定年份是否为闰年,true为闰年,false为平年
bool leapYear(int year) {
if (year % 4 == 0) {
if (year % 100 == 0 && year % 400 != 0)
return false;
else
return true;
}
return false;
}
// 返回指定月份的天数
int days(int mouth, bool leap) {
if (mouth == 1 || mouth == 3 || mouth == 5 || mouth == 7 || mouth == 8 || mouth == 10 || mouth == 11)