P2408 特殊日期

我们先看代码:

java 复制代码
public class Main {
    public static void main(String[] args) {
        int count = 0;
        for(int year = 1900 ; year <= 9999 ; year++) {
            int sumYear = getSum(year);

            for (int month = 1; month <= 12; month++) {
                int maxDay = getMaxDay(month , year);
                int sumMonth = getSum(month);
                for(int day = 1 ; day <= maxDay ; day++){
                    int sumDay = getSum(day);
                    if(sumYear == sumMonth + sumDay){
                        count++;
                    }
                }
            }
        }
        System.out.println(count);
    }

    public static int getSum(int num){
        int sum = 0;
        while(num > 0){
            sum += num % 10;
            num /= 10;
        }
        return sum;
    }
    public static int getMaxDay(int month ,int year){
        switch (month){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                return 31;
            case 4:
            case 6:
            case 9:
            case 11:
                return 30;
            case 2:
            return isLeapYear(year) ? 29 : 28;
            default:
                return 0;
        }
    }

    public static boolean isLeapYear(int year) {
        return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ;
    }
}

我们分模块分析:

这部分函数是为了获取每一位数字并将其加和

这部分函数是为了找到每个月的最大天数

注意还有闰年的存在,所以要有一个判断函数

如果是的话就返回true,如果不符合就返回false

相关推荐
Don.TIk1 分钟前
ChaperTwo-整合 SaToken 实现 JWT 登录功能
java·开发语言
qq_2518364571 分钟前
基于java Web汽车销售管理系统设计与实现
java·前端·汽车
南极企鹅5 分钟前
事务&@Transactional注解
java·数据库·spring·oracle·mybatis
yaoxin52112317 分钟前
406. Java 文件操作基础 - 字符与二进制流
java·开发语言·python
江屿风24 分钟前
C++OJ题经验总结(竞赛)1
开发语言·c++·笔记·算法
happymaker062625 分钟前
SpringBoot学习日记——DAY02(SpringBoot整合Swagger3)
java·spring boot·学习
阿坤带你走近大数据36 分钟前
Java中的JVM、类加载记住、多线程、性能优化的概念
java·jvm·性能优化
鱼鳞_1 小时前
苍穹外卖-Day04
java
未若君雅裁1 小时前
Spring Boot 自动配置原理与常用注解
java·spring boot·后端