无聊纪念一下;
警示后人;
最后一个数据会TLE;
C++ 代码
#include <iostream>
#include <algorithm>
#define int long long
using namespace std;
string d1, d2;
int y, m, d;
int m_[8] = {1, 3, 5, 7, 8, 10, 12};
int sum;
void s_num()
{
for(int i = 3, k = 1; i >= 0; i --, k *= 10)
y += (d1[i] - '0') * k;
for(int i = 5, k = 1; i >= 4; i --, k *= 10)
m += (d1[i] - '0') * k;
for(int i = 7, k = 1; i >= 6; i --, k *= 10)
d += (d1[i] - '0') * k;
}
void if_wen()
{
reverse(d1.begin(), d1.end());
string s = d1;
reverse(d1.begin(), d1.end());
if(s == d1)
sum ++;
}
bool if_y()
{
if(y % 4 == 0)
if(y % 100 == 0)
if(y % 400 == 0)
return true;
else
return false;
else
return true;
return false;
}
int er()
{
int l = 0, r = 6;
while(l < r)
{
int mid = l + r >> 1;
if(m <= m_[mid])
r = mid;
else
l = mid + 1;
}
return l;
}
int if_m()
{
if(m != 2)
if(m == m_[er()])
return 31;
else
return 30;
if(if_y() == true)
return 29;
return 28;
}
void ne()
{
if(d < if_m())
d ++;
else
{
d = 1;
if(m != 12)
m ++;
else
m = 1, y ++;
}
string s1 = to_string(y), s2 = to_string(m), s3 = to_string(d);
if(s2.size() == 1)
{
s2 += '0';
reverse(s2.begin(), s2.end());
}
if(s3.size() == 1)
{
s3 += '0';
reverse(s3.begin(), s3.end());
}
d1.erase(d1.begin(), d1.end());
d1 += (s1 + s2 + s3);
}
void Reply_date()
{
s_num();
do
{
if_wen();
ne();
}
while(d1 <= d2);
printf("%lld", sum);
}
signed main()
{
cin >> d1 >> d2;
Reply_date();
return 0;
}