题意

  • 计数两日期之间的回文日期

思路

  • 枚举所有年份,构造月份判断是否合法
  • 枚举所有月份和日期,构造年月日看是否在区间内
  • 但是,构造年份检查月份还要分大小月以及平年闰年,相对麻烦,故构造年月日是更为便捷的解法

AC代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int st,ed,ans=0;
    int up[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
    cin>>st>>ed;
    for(int i=1;i<=12;i++){
        for(int j=1;j<=up[i];j++){
            int y=j%10*1e7+j/10*1e6+i%10*1e5+i/10*1e4+i*1e2+j;
            if(y>=st&&y<=ed)ans++;
        }
    }
    cout<<ans;
    return 0;
}

  • 计数,构造,枚举,总是勾搭在一起

  • 2025.4.19 枚举限制多的(月份),判断限制少的(年)

    闰年的判断被规避了,92200229是闰年