题目
代码
#include <bits/stdc++.h>
using namespace std;
int day[] = {-1, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
bool has_2(int x)
{
while (x)
{
if (x % 10 == 2)
return true;
x /= 10;
}
return false;
}
bool check(int y, int m, int d)
{
return has_2(y) || has_2(m) || has_2(d);
}
bool is_run(int y, int m)
{
if (m != 2)
return false;
if (y % 400 == 0)
return true;
if (y % 4 == 0 && (y % 100))
return true;
return false;
}
int main()
{
int y = 1900, m = 1, d = 1;
int cnt = 0;
for (;; d++)
{
if (d > day[m] + is_run(y, m))
{
d = 1;
m++;
}
if (m > 12)
{
m = 1;
y++;
}
if (check(y, m, d))
cnt++;
if (y == 9999 && m == 12 && d == 31)
break;
}
cout << cnt;
return 0;
}
注意
处理日期之后,在循环体内退出
处理日期之后再进行日期判断