早右昕 @ 2017-08-16 11:55:21
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
using namespace std;
int a[9],b[9],sy,sm,sd,tot;
inline bool comp()
{
//小前大后
int temp=a[1]*1000+a[2]*100+a[3]*10+a[4];
if(temp>sy) return 0;
if(temp<sy) return 1;
temp=a[5]*10+a[6];
if(temp>sm) return 0;
if(temp<sm) return 1;
temp=a[7]*10+a[8];
if(temp>sd) return 0;
return 1;//相等的时候
}
inline roundyear()
{
if(!a[4]&&!a[3])//yeartest
{
int temp=a[1]*10+a[2];
if(temp%4==0) return 1;
else return 0;
}
else
{
int temp=a[3]*10+a[4];
if(temp%4==0) return 1;
else return 0;
}
}
inline bool ok()
{
//monthtest
int temp=a[5]*10+a[6],daylimit=30;
if(temp>12||temp==0) return 0;
if(temp==2)
{
daylimit=28;
if(roundyear())
daylimit=29;
}//daytest
else if(temp==4||temp==6||temp==9||temp==11) daylimit=30;
else daylimit=31;
temp=a[7]*10+a[8];
if(temp>daylimit||temp==0) return 0;
return 1;
}
int main()
{
// freopen("date.in","r",stdin);
// freopen("date.ans","w",stdout);
bool flag=1;
for(int i=1; i<=8; i++) scanf("%c",&a[i]),a[i]-='0';
getchar();
for(int i=1; i<=8; i++)
{
scanf("%c",&b[i]),b[i]-='0';
if(a[i]!=b[i]) flag=0;
}getchar();
if(flag)
{
for(int i=1; i<=4; i++) //因为一定保证合法
if(a[i]!=a[9-i]) flag=0;
if(flag) printf("1\n");
else printf("0\n");
return 0;
}
sy=b[1]*1000+b[2]*100+b[3]*10+b[4];
sm=b[5]*10+b[6];sd=b[7]*10+b[8];//但TM不保证会不会回文
int hy=a[1]*1000+a[2]*100+a[3]*10+a[4];
int hm=a[5]*10+a[6],hd=a[7]*10+a[8];
for(int i=1; i<=4; i++)
a[9-i]=a[i];//copy
int om=a[5]*10+a[6],od=a[7]*10+a[8];
if(om<=hm&&od<=hd) tot++;
while(comp())
{
if(ok()) tot++;
a[4]++;
a[3]+=a[4]/10;
a[4]%=10;
a[2]+=a[3]/10;
a[3]%=10;
a[1]+=a[2]/10;
a[2]%=10;
for(int i=1; i<=4; i++)
a[9-i]=a[i];//copy
}
printf("%d\n",tot);
}