日期类型题目
前提
31天的月份分别是:1月、3月、5月、7月、8月、10月、12月。 30天的月份分别是:4月、6月、9月、11月。
AcWing 1229. 日期问题
AcWing 466. 回文日期
日期类的题目通常是用八位的整数来表示日期,一个范围的日期就枚举它们之间对应的整数,判断一个枚举的日期是否超出范围就直接比较对应的整数的大小
获取年数,月份数,天数
int year = date / 10000, month = date % 10000 / 100, day = date % 100;
月份数组
int days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
检查是否是合法的日期
//检查是否是合法的日期
bool check_valid(int year,int month,int day){
if(month == 0 ||month > 12) return false;
if(day == 0) return false;
//特判二月闰年的情况
if (month != 2)
{
if (day > days[month]) return false;
}
else
{
int leap = year % 100 && year % 4 == 0 || year % 400 == 0;
if (day > 28 + leap) return false;
}
}
写错了吧
判断月份是或
对的,已改正
好的喵