算法入门——回文日期

枚举 · 例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 回复 分享
发布于 11-05 08:50 湖北
这思路很精彩,牛!
点赞 回复 分享
发布于 10-26 18:03 广东

相关推荐

11-03 18:50
门头沟学院 Java
迷茫的大四🐶:问就是马上到,一周五天,6个月以上,全国可飞
点赞 评论 收藏
分享
评论
17
1
分享

创作者周榜

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