算法入门——回文日期

枚举 · 例3-回文日期

https://ac.nowcoder.com/acm/contest/20960/1006

题意

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

思路

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

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是闰年

全部评论
看不懂,但是很厉害
1 回复 分享
发布于 2025-11-05 08:50 湖北
牛逼,92200229天然就是闰年,所以不需要单独判断是否为闰年
点赞 回复 分享
发布于 01-31 10:31 四川
厉害
点赞 回复 分享
发布于 01-30 17:57 河南
太牛逼了哥们
点赞 回复 分享
发布于 01-27 11:16 浙江
这思路很精彩,牛!
点赞 回复 分享
发布于 2025-10-26 18:03 广东

相关推荐

02-25 13:02
中南大学 C++
点赞 评论 收藏
分享
评论
25
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务