466. 回文日期

简介: 466. 回文日期

题目链接

466. 回文日期 - AcWing题库


一些话


流程

<!---->输出共一行,包含一个整数,表示在 date1

和 date2

之间,有多少个日期是回文的。

//求有多少个类问题,用枚举做

//此题的枚举情况,要判断回文串、在区间内和 日期合法

//要判断多个性质,可以直接枚举符合其中一种性质的情况

//回文串和区间内容易枚举,但区间内枚举的时间复杂度太高,要枚举8次方级别的数字,而回文串只要枚举一半,即4次方级别,所以此题选择枚举回文串然后做其它两个判断

套路

1.回文串枚举

//回文串的枚举可以只枚举一半,然后通过

<!--for(int i = 1000;i < 10000;i ++){-->
<!--        int date = i,x=i;-->
<!--        for(int j = 0;j < 4;j++) date = date * 10 + x % 10,x/=10;-->
<!--        if(date >= date1 && date <= date2 && check(date)) ans++;-->
<!--}-->

来让其恢复完整

2.//闰年的判断:(year % 4 == 0 && year % 100|| year % 400 == 0),被四百整除这条经常会漏


ac代码

[//]: # (打卡模板,上面预览按钮可以展示预览效果 ^^)
```
// 19:45~05 wa;
//20:06~20:16 accepted;
 和 date2
 之间,有多少个日期是回文的。
//求有多少个类问题,用枚举做
//此题的枚举情况,要判断回文串、在区间内和 日期合法
//要判断多个性质,可以直接枚举符合其中一种性质的情况
//回文串和区间内容易枚举,但区间内枚举的时间复杂度太高,要枚举8次方级别的数字,而回文串只要枚举一半,即4次方级别,所以此题选择枚举回文串然后做其它两个判断
//回文串的枚举可以只枚举一半,然后通过
<!--for(int i = 1000;i < 10000;i ++){-->
<!--        int date = i,x=i;-->
<!--        for(int j = 0;j < 4;j++) date = date * 10 + x % 10,x/=10;-->
<!--        if(date >= date1 && date <= date2 && check(date)) ans++;-->
<!--}-->
来让其恢复完整
//闰年的判断:(year % 4 == 0 && year % 100|| year % 400 == 0),被四百整除这条经常会漏
//
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 1e5 + 10;
int months[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
bool check(int date){
    int year = date / 10000;
    int month = date % 10000 / 100;
    int day = date % 100;
    // cout << year << month << day << endl;
    if(month != 2 && day > months[month] || !day) return false;
    if(month > 12 || !month) return false;
    if(month == 2 && day > 28 + (year % 4 == 0 && year % 100|| year % 400 == 0)) return false;
    return true;
}
int main(){
    int date1,date2;
    cin >> date1 >> date2;
    int ans = 0;
    for(int i = 1000;i < 10000;i ++){
        int date = i,x=i;
        for(int j = 0;j < 4;j++) date = date * 10 + x % 10,x/=10;
        if(date >= date1 && date <= date2 && check(date)) ans++;
    }
    cout << ans << endl;
    return 0;
}
```
目录
相关文章
|
7月前
|
人工智能 Cloud Native 虚拟化
从铜线到云端:网络技术的跨越与未来趋势
本文围绕物理网络和云网络基础知识科普进行展开,最后浅谈在AI大模型浪潮下云网络的演进方向。
439 130
|
1月前
|
数据可视化 物联网 开发者
深度解析四大LLM微调工具:从单卡到千亿级训练的四大解决方案
本文详解大语言模型微调四大工具——Unsloth、Axolotl、LlamaFactory、DeepSpeed,覆盖从单卡实验到万亿参数分布式训练场景,助你掌握主流框架选型策略,提升微调效率。建议点赞收藏。
501 0
|
6月前
|
人工智能 测试技术 API
Windows用户必备:Postman v11详细安装指南与API测试入门教程(附官网下载
Postman是全球领先的API开发与测试工具,支持REST、SOAP、GraphQL等协议调试。2025年最新版v11新增AI智能生成测试用例、多环境变量同步等功能,适用于前后端分离开发、自动化测试、接口文档自动生成及团队协作共享API资源。本文详细介绍Postman的软件定位、核心功能、安装步骤、首次配置、基础使用及常见问题解答,帮助用户快速上手并高效利用该工具进行API开发与测试。
|
人工智能 小程序 前端开发
小程序二手商城|使用Springboot+vue+微信小程序开发校园二手商城系统
本项目基于Springboot+vue+微信小程序实现了一个校园二手物品商城交易系统。系统的后台使用springboot+mybatis开发实现,后台管理页面使用Vue+ElementUI开发实现,用户端基于微信小程序开发实现。前端用户使用微信登录小程序后,可以在线浏览二手商品,并在线购买下单和评论等,同时自己也可以发布相应的二手商品,并管理自己的订单信息和销售信息。管理员登录后台管理系统可以管理人员、商品分类、商品、订单等相关信息。具体见下面展示。
503 0
|
10月前
pyqt6 实现弹窗案例
本文介绍了如何实现一系列弹窗效果,包括基础弹窗、消息对话框、输入对话框和清除按钮。通过设置 `self.dialog = Dialog()` 可以轻松实现基础弹窗,而消息对话框则使用 `QMessageBox` 类。输入对话框支持文本、数字和下拉列表输入,清除按钮用于清空输入框内容。每个功能都通过按钮触发相应的槽函数来实现。
714 0
|
关系型数据库 MySQL 数据库
MySQL8.0.36 安装配置教程(保姆级,包含图文讲解,环境变量的配置)适合小白
MySQL8.0.36 安装配置教程(保姆级,包含图文讲解,环境变量的配置)适合小白
|
Java
ThreadLocal 场景题
ThreadLocal 场景题
86 1
|
Linux
荔枝派Zero(全志V3S)驱动开发之串口
修改设备树打开 uart1 和 uart2,在 buildroot 移植 minicom 用来测试 uart1 和 uart2。
406 0
|
机器学习/深度学习 存储 数据可视化
|
运维 Kubernetes 算法
独家深度 | 那些年我做开源和自研走过的弯路和经验
本文将重点分享开源结合自研项目的一些经验。
1228 0
独家深度 | 那些年我做开源和自研走过的弯路和经验

热门文章

最新文章