问题描述:
题解:
#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
int daysInMouth[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
int ans = 0;
for (int i = 1;i < 13;i++)
{
for (int j = 1;j <= daysInMouth[i];j++)
{
int date[4] = { i / 10,i % 10,j / 10,j % 10 };
int a = i / 10, b = i % 10, c = j / 10, d = j % 10;
if (a == b - 1 && b == c - 1)
{
ans += 1;
}
else if (b == c - 1 && c == d - 1)
{
ans += 1;
}
}
}
cout << ans;
return 0;
}
要点分析:
1.凡公历年数能被4除尽的年份为闰年,2月有29天,全年366天。 除不尽的年份为平年,2月有28天,全年365天。 2024年能被4除尽,所以是闰年。 这里还有一个特殊情况,如果是整世纪年,如1800年、1900年、2100年,可以被100整除但不能被400整除,仍为平年。本题2022年为平年,各月份最大日期数组如下:
2.须考虑同时满足两个顺子的日期情况,比如“0123”,既满足“012”,又满足“123”,所以此处在进行条件判断来统计顺子日期数目时,条件关系应为“或”,以下两种都满足:
3.注意进行枚举循环时,区分日期与月份循环的包含关系