当前位置: 首页 > news >正文

日期题模版(made by yyf)

日期题通常包括:判断是否为闰年,计算某年某月有多少天,日期自增,遍历日期等,这里给出总结

判断是否为闰年

首先什么是闰年,闰年具有哪些特征?如果是整百年(如2000,1700)要被400整除才是闰年,否则为平年(2000闰年,1700平年);如果是非整百年(如2008,2009),只要被4整除就是闰年,不能被4整除为平年(2008闰年,2009平年)。

所以判断是否为闰年的写法就很固定:

static boolean isLeap(int y){ return (y % 4 == 0 && y % 100 != 0) || (y % 400 == 0); }

也就是闰年是能被4整除且不能被100整除或者能被400整除的数字,平年的2月份只有28天而闰年2月份有29天。

计算某年有某月有几天

boolean isLeap(int year){ return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0); } int daysInMonth(int y, int m){ int[] d = {0,31,28,31,30,31,30,31,31,30,31,30,31}; if(m == 2 && isLeap(y)) return 29; return d[m]; }

给你一个年月返回有多少天,d代表每个月有多少天,如果是闰年2月份返回29天

日期自增

boolean isLeap(int year){ return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0); } int daysInMonth(int y, int m){ int[] d = {0,31,28,31,30,31,30,31,31,30,31,30,31}; if(m == 2 && isLeap(y)) return 29; return d[m]; } int[] nextDay(int y, int m, int d){ d++; if(d > daysInMonth(y,m)){ d = 1; m++; if(m > 12){ m = 1; y++; } } return new int[]{y,m,d}; }

1.先让日期自增,d++,比如 2016-11-18 → d=19 2.如果日期超过该月天数,d=1换月,月自增,如果月超过12,年自增,最后返回年月日,

枚举日期区间

while(!(y1==y2 && m1==m2 && d1==d2)){ // 在这里写你的逻辑,例如判断是否回文 int[] next = nextDay(y1, m1, d1); y1 = next[0]; m1 = next[1]; d1 = next[2]; } // 最后一天也要处理

只要不是结束日期,就继续加一天。

你能枚举区间中的每一天,例如:判断是否回文,判断日期是否合法,累计天数,统计某种日期天数,例如周六周末。

例:给出一个日期区间,判断区间内有多少回文日期

记住:回文日期不需要枚举每天,回文日期由年份决定。

注意:要判断日期是否合法(月份要满足1<=m<=12,天数要满足在当月天数内)

import java.util.*; public class Main{ static boolean isLeap(int y){ return (y%400==0 || (y%4==0 && y%100!=0)); } static int daysInMonth(int y,int m){ int[] d = {0,31,28,31,30,31,30,31,31,30,31,30,31}; if(m==2 && isLeap(y)) return 29; return d[m]; } // 把 YYYYMMDD 转成整数便于比较 static int makeDate(int y){ int m = y % 100; int d = y / 100; return y * 10000 + m * 100 + d; } public static void main(String[] args){ Scanner sc = new Scanner(System.in); int L = sc.nextInt(); int R = sc.nextInt(); int lYear = L / 10000; int rYear = R / 10000; int ans = 0; for(int y = lYear; y <= rYear; y++){ int m = y % 100; int d = y / 100; // 月份非法 if(m < 1 || m > 12) continue; // 日期非法 if(d < 1 || d > daysInMonth(y, m)) continue; int date = makeDate(y); // 判断是否在区间内 if(date >= L && date <= R) ans++; } System.out.println(ans); } }

模版需要背

http://www.jsqmd.com/news/73425/

相关文章:

  • 【活动总结】创药沙龙第一期:ADC药物研发的挑战与机遇成功举办
  • 【C/C++】多继承以及继承过程的注意事项
  • CppCon 2024 学习:Gazing Beyond Reflection for C++26
  • 【MCP SC-400安全加固黄金法则】:3年实战经验浓缩的7项配置规范
  • android studio 2025 2.2版本 需要点击Main menu才会出现工具栏?如何默认显示工具栏?
  • xshell的一个会话的连接的ip地址在哪里修改?
  • Day9 >> 151、反转字符串中的单词 +
  • 2025中国电缆一线品牌推荐,中国电缆十大品牌推荐:知名品牌12月TOP榜单 - 品牌2026
  • 三星三折叠价格和功能揭秘:19999元起,三折叠旗舰藏多少惊喜?
  • K8S系列之6.1:自定义扩展(CRD 与 Operator 设计模式)
  • R-Zero:从零数据自进化推理大语言模型
  • 基于密集型复杂城市场景下求解无人机三维路径规划的Q-learning 算法研究(Matlab代码实现)
  • 如何用免费工具3分钟终极优化Windows右键菜单:告别杂乱,提升300%操作效率
  • Wan2.2-T2V-A14B在地震波传播模拟教学中的科学准确性
  • Day25
  • Actor-Critic 强化学习中的两大核心损失函数:PG Loss 与 VF Loss 详解
  • Wan2.2-T2V-A14B能否生成符合人类视觉习惯的景深效果
  • Wan2.2-T2V-A14B在环保公益广告创作中的社会责任体现
  • Day 36 MLP神经网络的训练
  • 终极指南:5分钟掌握XUnity.AutoTranslator让外文游戏变中文
  • Wan2.2-T2V-A14B能否识别并生成特定艺术风格如水彩画
  • 2025 最新跨境物流服务商 / 公司 TOP5 评测!深度覆盖欧美加专线,全链路方案 + 时效保障权威榜单发布,赋能跨境电商高效发展 - 全局中转站
  • 基于Comsol的激光熔覆熔池流动数值模拟探索
  • 中国台湾阳明交大团队让AI帮你实现真正的冻结时光
  • 金融机构如何落地智能体?16个头部企业Agent最佳实践
  • 超细整理,性能测试如何做?怎么做?性能压力负载(汇总二)
  • 工作生活没有节奏感怎么办?
  • 深入剖析高并发场景下ZooKeeper服务端Watcher实现原理
  • 2025 最新空运整柜拼箱/跨境物流/货代/外贸出口/货代方案服务商 TOP5 评测!深度覆盖欧美加专线,全链路赋能 + 实力实证权威榜单发布,专业服务重构跨境贸易生态 - 全局中转站
  • AXI-A7.4.1 AtomicCompare