回文日期
ac代码
#include<iostream>
using namespace std;
int cnt=0;int n,m;
//写一个判断日期是否合法的函数
bool key(int n){
int mon[14]={0,31,28,31,30,31,30,31,31,30,31,30,31};
//年份
int year=n/10000;
int day=n%100;
n/=100;
int month=n%100;
if(year%4==0&&year%100!=0||year%400==0)mon[2]=29;
if(month>0&&month<13&&day<=mon[month]&&day>0)return true;
else return false;
}
//判断是否回文的函数
bool check(int x){
int sou=x%10;
int hun=(x/10)%10;
int ten=(x/100)%10;
int one=x/1000;
x=x*10000+sou*1000+hun*100+ten*10+one;
if(key(x)&&x>=n&&x<=m)return true;
else return false;
}
int main(){
cin>>n>>m;
for(int i=n/10000;i<=m/10000;i++){
if(check(i))cnt++;
}
cout<<cnt;
return 0;
}
1.通过这道题,应该学会写判断日期是否合法函数
2.对于回文日期的优化,应该只考虑年份,然后造出日期是否合法,从1e8优化到1e4