AcWing 466. 回文日期
原题链接
简单
作者:
小王子_19
,
2024-04-03 18:47:49
,
所有人可见
,
阅读 1
C++ 代码 (思路是越做越清晰,开始还比较模糊,然后看自己差什么)
#include <cstdio>
#include <iostream>
using namespace std;
int y1, m1, d1, y2, m2, d2;
int cnt;
void check(int year, int month, int day)
{
int f1 = 0, f2 = 0;
int t1 = year / 100;
if (t1 / 10 == day % 10 && t1 % 10 == day / 10) f1 = 1;
int t2 = year % 100;
if (t2 / 10 == month % 10 && t2 % 10 == month / 10) f2 = 1;
if (f1 && f2) cnt ++ ;
}
int main()
{
scanf("%04d%02d%02d", &y1, &m1, &d1);
scanf("%04d%02d%02d", &y2, &m2, &d2);;
int f = 0, start = 0;
for (int i = y1; i <= y2; i ++ )
for (int j = 1; j <= 12; j ++ )
{
for (int k = 1; k <= 31; k ++ )
{
if (j == 2)
{
if (i % 400 == 0 || i % 100 != 0 && i % 4 == 0)
{
if (k == 30) break;
}
else if (k == 29) break;
}
if ((j == 4 || j == 6 || j == 9 || j == 11) && k == 31) break;
if (j == m1 && k == d1) start = 1;
if (start) check(i, j, k);
if (i == y2 && j == m2 && k == d2)
{
f = 1;
break;
}
}
if (f) break;
}
cout << cnt << endl;
return 0;
}