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

相关推荐
YMH.2 小时前
Day3.14c++
开发语言·c++
于先生吖2 小时前
JAVA国际版图文短视频交友系统源码:多语言适配,短视频+图文双形态可商用
java·音视频·交友
花间相见2 小时前
【JAVA基础11】—— 吃透原码、反码、补码:计算机数值表示的底层逻辑
java·开发语言·笔记
阿蒙Amon2 小时前
C#常用类库-详解Playwright
开发语言·c#
特种加菲猫2 小时前
C++ std::list 完全指南:从入门到精通所有接口
开发语言·c++
清空mega2 小时前
第4章:JSP 程序设计实战——for、if、动态表格与 99 乘法表
开发语言·python
共享家95272 小时前
Java入门(类和对象)
java·开发语言
习惯就好zz2 小时前
Qt Quick 系统托盘完整实践
开发语言·qt·qml·系统托盘·system tray·qapplication·qguiapplication