Java解决特殊日期问题

Java解决特殊日期问题

01 题目

问题描述

  • 对于一个日期,我们可以计算出年份的各个数位上的数字之和,也
    可以分别计算月和日的各位数字之和。请问从1900年1月1日至
    9999年12月31日,总共有多少天,年份的数位数字之和等于月
    的数位数字之和加日的数位数字之和。
  • 例如,2022年11月13日满足要求,因为2+0+2+2=
    (1+1)+(1+3)。
  • 请提交满足条件的日期的总数量。

答案提交

  • 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结
    果为一个整数,在提交答案时只填写这个整数,填写多余的内容将
    无法得分

02 知识点

  • 枚举

  • 省模拟赛

03 我的题解

public class test2048 {
	public static void main(String[] args) {
		int count=0;//符合条件加一
		for (int i = 1900; i < 10000; i++) {//从1900循环到9999
			int num=i;
			int targer=num%10+num/10%10+num/100%10+num/1000;//符合条件
			for (int j =1; j < 13; j++) {//从一月循环到12月
				int day=0;
				//不同月份,不同天数
				if (j==1||j==3||j==5||j==7||j==8||j==10||j==12) {
					day=31;
				}else if (j==4||j==6||j==9||j==11) {
					day=30;
				}else {
					if ((i%4==0&&i%100!=0)||i%400==0) {
						day=29;
					}else {
						day=28;
					}
				}
				int m=j%10+j/10;//月的数和
				for (int k = 1; k < day+1; k++) {
					int n=k%10+k/10;//日的数和
					if (m+n==targer) {
						count++;
						continue;//每个月最多有一天符合要求
					}
				}
			}
		}

		System.out.println(count);
	}

}

你可能感兴趣的:(蓝桥杯,java,算法,数据结构)