题目描述
输入格式
输出格式
样例数据
题目分析
水题,写的有点复杂,其实每次按照年份枚举就行了,因为年份定了,月份和日期也就定了。
源代码
#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cstring>
#include<cstdlib>
#include<vector>
#include<cstdio>
#include<cmath>
#include<queue>
using namespace std;
inline const int Get_Int() {
int num=0,bj=1;
char x=getchar();
while(x<'0'||x>'9') {
if(x=='-')bj=-1;
x=getchar();
}
while(x>='0'&&x<='9') {
num=num*10+x-'0';
x=getchar();
}
return num*bj;
}
const int MonthDays[]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
bool Check(int Date) {
int tmp[10]= {0},cnt=0;
while(Date) {
cnt++;
tmp[cnt]=Date%10;
Date/=10;
}
for(int i=1; i<=4; i++)
if(tmp[i]!=tmp[9-i])return false;
return true;
}
int tmpMonthDays[15];
int GetNext(int Date) {
int tmp[10]= {0},cnt=0,Year=0,Month=0,Day=0;
while(Date) {
cnt++;
tmp[cnt]=Date%10;
Date/=10;
}
for(int i=8; i>=1; i--)
if(i>=5)Year=Year*10+tmp[i];
else if(i>=3)Month=Month*10+tmp[i];
else Day=Day*10+tmp[i];
tmpMonthDays[2]=MonthDays[2];
if((Year%4==0&&Year%100!=0)||Year%400==0)tmpMonthDays[2]++;
if(Day<tmpMonthDays[Month])Day++;
else if(Day==tmpMonthDays[Month]) {
if(Month!=12)Month++;
else {
Year++;
Month=1;
}
Day=1;
}
return Year*10000+Month*100+Day;
}
int Start,End,Now,sum=0;
int main() {
for(int i=1; i<=12; i++)tmpMonthDays[i]=MonthDays[i];
Start=Get_Int();
End=Get_Int();
if(Start==End) {
printf("%d\n",Check(Start));
return 0;
}
Now=Start;
while(true) {
sum+=Check(Now);
if(Now==End)break;
Now=GetNext(Now);
}
printf("%d\n",sum);
return 0;
}