#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
bool res(int y,int m,int d){
string a;
if(m<=9){
if(d<=9){
a=to_string(y)+"0"+to_string(m)+"0"+to_string(d);
}
else a=to_string(y)+"0"+to_string(m)+to_string(d);
}
else{
if(d<=9){
a=to_string(y)+to_string(m)+"0"+to_string(d);
}
else a=to_string(y)+to_string(m)+to_string(d);
}
string b=a;
reverse(a.begin(),a.end());
if(b==a){
return true;
}
else return false;
}
bool isr(int y){
if(y%400==0) return true;
else if(y%4==0&&y%100!=0) return true;
else return false;
}
int main(){
string first,last;
cin>>first>>last;
int year1=stoi(first.substr(0,4));
int year2=stoi(last.substr(0,4));
int month1=stoi(first.substr(4,2));
int month2=stoi(last.substr(4,2));
int day1=stoi(first.substr(6,2));
int day2=stoi(last.substr(6,2));
int count=0;
for(int i=year1;i<=year2;i++){
int j=1;
if(i==year1) j=month1;
for(j;j<=12;j++){
int day;
if(i==year2&&j>month2) break;
if(j==1||j==3||j==5||j==7||j==8||j==10||j==12) day=31;
else if(j==2&&isr(i)) day=29;
else if(j==2&&!isr(i)) day=28;
else day=30;
int k=1;
if(i==year1&&j==month1) k=day1;
for(k;k<=day;k++){
if(i==year2&&j==month2&&k>day2) break;
if(res(i,j,k)) count++;
}
}
}
cout<<count;
}
这道题我是用字符串模拟的,难度还行,一些基础语法与循环条件一开始很难想到,然后看了大佬题解才发现不用这么麻烦。。。