首页 > 试题广场 >

回文日期

[编程题]回文日期
  • 热度指数:3615 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}一个日期用 \sf YYYYMMDD8 位数字表示,其中前四位为年份,接着两位为月份,最后两位为日期。

\hspace{15pt}若这 8 位数字本身是一个回文数,则称该日期为回文日期

\hspace{15pt}给定起始日期 a 与终止日期 b(均包含在内,且满足 a\leqq b),请计算区间内真实存在的回文日期数量。

\hspace{15pt}【名词解释】回文数:一个数字从左往右读与从右往左读完全相同。

\hspace{15pt}【日期合法性】
\hspace{23pt}\bullet\, 1,3,5,7,8,10,12 月有 31 天;
\hspace{23pt}\bullet\, 4,6,9,11 月有 30 天;
\hspace{23pt}\bullet\, 2 月在闰年29 天,平年有 28 天。

\hspace{15pt}【闰年判定】
\hspace{23pt}\bullet\, 能被 4 整除但不能被 100 整除的年份;
\hspace{23pt}\bullet\, 或能被 400 整除的年份。

输入描述:
\hspace{15pt}第一行输入 8 位整数 a,表示起始日期。
\hspace{15pt}第二行输入 8 位整数 b,表示终止日期。


输出描述:
\hspace{15pt}输出一个整数,表示 [a,b] 区间内回文日期的数量。
示例1

输入

20110101
20111231

输出

1

说明

\hspace{15pt}在这个样例中,在 \sf{20110101}\sf{20111231} 之间,回文日期有 1 个,即 \sf{20111102}
示例2

输入

20000101
20101231

输出

2

说明

\hspace{15pt}在这个样例中,在 \sf{20000101}\sf{20101231} 之间,回文日期有 2 个,即 \sf{20010002}\sf{20100102}
头像 Z_L_G
发表于 2025-02-26 22:39:24
题意 计数两日期之间的回文日期 思路 枚举所有年份,构造月份判断是否合法 枚举所有月份和日期,构造年月日看是否在区间内 但是,构造年份检查月份还要分大小月以及平年闰年,相对麻烦,故构造年月日是更为便捷的解法 AC代码 #include<bits/stdc++.h> using n 展开全文
头像 Silencer76
发表于 2025-08-09 02:50:48
题目链接 回文日期 题目描述 一个日期用8位数字 YYYYMMDD 表示。若这个8位数字本身是一个回文数,则称该日期为“回文日期”。 给定一个起始日期 date1 和一个终止日期 date2,请计算这个区间内(包含 date1 和 date2)所有真实存在的回文日期的数量。 日期合法性规则: 月必 展开全文
头像 手有余湘
发表于 2025-07-23 18:23:24
import sys start=input() end=input() result=0 for i in range(int(start[:4]),int(end[:4])+1): gh=None if (i%4==0 and i%100!=0) or i%400==0: 展开全文
头像 BraveCoder
发表于 2025-08-29 11:04:58
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); 展开全文
头像 lahm66
发表于 2025-11-05 08:48:58
Java回文,模拟,判断日期 import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { private static boolean isLeap(int year){ 展开全文
头像 雨下着耶
发表于 2025-12-12 13:59:57
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 平年 展开全文
头像 Kato_Shoko
发表于 2025-11-05 10:57:05
枚举年份就行了,很常见的一种统计日期的写法 #include <bits/stdc++.h> #define il inline using namespace std; using ll = long long; using ull = unsigned long long; usi 展开全文
头像 N_zip
发表于 2025-07-11 21:25:10
#include <bits/stdc++.h> using namespace std; int s1,s2,ans=0; int month[13]={-1,31,28,31,30,31,30,31,31,30,31,30,31}; //判断是否回文 bool check(const 展开全文
头像 AchanLin
发表于 2025-12-19 17:44:35
using System; using System.Collections.Generic; using System.Linq; public class Program { public static bool IsPalindrome(string s) { retu 展开全文
头像 czcczz
发表于 2025-11-05 21:12:16
#include <iostream> #include<string> using namespace std; const int monthr[] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; const 展开全文