闰年的数目

【问题描述】

闰年是公历中的名词。

普通年(不能被100整除的年份)能被4整除的为闰年。(如2004年就是闰年,1999年不是闰年);

世纪年(能被100整除的年份)能被400整除的是闰年。(如2000年是闰年,1900年不是闰年);

闰年(Leap Year)是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的。

计算两个年份之间有多少闰年。比如2000年到2004年之间有2个闰年。而2000年到2300年之间有73个闰年。

【输入形式】

输入第一行正整数t (10 ≤ n ≤ 100),表示有多少组测试数据。

后面有t行,每行两个正整数a,b,计算a,b两个年份之间有多少闰年。

40%的测试数据1 ≤ a≤ b≤ 10(4);

30%的测试数据1 ≤ a≤ b≤ 10(6);

20%的测试数据1 ≤ a≤ b≤ 10(7);

10%的测试数据1 ≤ a≤ b≤ 10(8);

【输出形式】

对于每组测试数据,输出一行,包含一个整数,表示a,b之间(包含a,b这两年)有多少闰年。

【样例输入】

复制代码
2
2000 2004
2000 2300

【样例输出】

复制代码
2
73

【样例说明】

第一个样例2000年和2004年是闰年

解题思路

定义一个函数来计算两个给定年份之间(包括这两个年份)的闰年数量。

这个函数的关键在于理解并应用闰年的规则,即:

  1. 普通年份能被4整除的是闰年(除非该年份也能被100整除,这种情况下它不是闰年)。

  2. 世纪年份(即能被100整除的年份)能被400整除的是闰年。

我们可以通过计算每个给定区间内符合上述条件的年份数量来确定闰年的总数。这可以通过计算区间内能被4、100和400整除的年份数量,然后进行适当的调整来实现。

注意:是a-1~b之间的年份

Java代码

java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int t = scanner.nextInt();// 读取测试数据组数
        while(t-- > 0){
            int a = scanner.nextInt();
            int b = scanner.nextInt();
            System.out.println(countLeapYears(a,b));
        }
    }

    private static int countLeapYears(int a, int b) {
        // 计算从1年到b年的闰年数目,然后减去从1年到a-1年的闰年数目
        return leapYearsUntil(b) - leapYearsUntil(a - 1);
    }

    private static int leapYearsUntil(int year) {
        // 能被4整除的年份
        int by4 = year / 4;
        // 能被100整除的年份
        int by100 = year / 100;
        // 能被400整除的年份
        int by400 = year / 400;
        // 闰年的总数 = 能被4整除 - 能被100整除 + 能被400整除的年份
        return by4 - by100 + by400;
    }
}
相关推荐
Niuguangshuo7 小时前
论文解读:CTC,端到端序列识别的开山之作
算法·语音识别
讳疾忌医丶8 小时前
深度拆解 RocksDB 内核:基于 C++17 的 FIFO 调度状态机与温度阶梯自愈设计
java·c++·算法·架构
高亦真8 小时前
今天是学习嵌入式的第37天
linux·学习·算法
罗西的思考10 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 --- (2)--- 训练
人工智能·算法·机器学习
深圳市方中禾科技11 小时前
FZH1625 LCD 驱动芯片深度评测与实战指南
算法·led
我不会起名字32211 小时前
一天一道算法题(34):回溯法的经典例题(子集)
java·数据结构·python·算法·golang·深度优先·力扣
huang57914713 小时前
哈希算法的抗碰撞机制与安全性增强策略4
算法
林浩杨_14 小时前
SIGIR 2026|南京大学:Video-GAR:“通过生成 Query 来验证视频语义理解”的生成增强范式
论文阅读·人工智能·算法
Elsa️74614 小时前
算法一周刷题总结
c++·算法
小小程序猴114 小时前
深圳乘路资讯AI培训怎么样?课程靠谱吗?——一套课程可信度评估模型与实证分析
人工智能·算法