70分求改
#include<bits/stdc++.h>
using namespace std;
int yf[13]={0,21,28,31,30,31,30,31,31,30,31,30,31};
int rq[9];
bool check()
{
for(int i=1;i<=4;i++)
{
if(rq[i]!=rq[9-i])return 0;
}
return 1;
}
int kn,ky,kr;
int wy,wr,wn;
int zs=0,wz=0,sum=0;
void dfs(int n,int y,int r,int step)
{
if(step==4)
{
if(check())sum++;
zs++;
return;
}
if(step==1)
{
for(int i=kn;i<=wn;i++)
{
int t=i;wz=0;
while(wz!=4)
{
wz++;
rq[5-wz]=t%10;
t=t/10;
}
dfs(i,1,1,step+1);
}
}
if(step==2)
{
int yk=1,yj=12;if(zs==0)yk=ky;
if(n==wn)yj=wy;
for(int i=yk;i<=yj;i++)
{
int t=i;wz=4;
while(wz!=6)
{
wz++;
rq[7-wz+4]=t%10;
t=t/10;
}
dfs(n,i,1,step+1);
}
}
if(step==3)
{
int rk=1,rj=yf[y];if(zs==0)rk=kr;
if(n%4==0&&n%100!=0&&y==2)rj+=1;
if(n%400==0&&y==2)rj+=1;
if(n==wn&&y==wy)rj=wr;
for(int i=rk;i<=rj;i++)
{
int t=i;wz=6;
while(wz!=8)
{
wz++;
rq[9-wz+6]=t%10;
t=t/10;
}
dfs(n,y,i,step+1);
}
}
}
int main()
{
int k,j;
cin>>k>>j;
kn = k / 10000;
ky = (k / 100) % 100;
kr = k % 100;
// 解析结束日期
wn = j / 10000;
wy= (j / 100) % 100;
wr = j % 100;
dfs(0,0,0,1);
cout<<sum;
return 0;
}