问题描述
对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从 1900 年 1 月 1 日至 9999 年 12 月 31 日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。
例如,2022年11月13日满足要求,因为 2+0+2+2=(1+1)+(1+3) 。
请提交满足条件的日期的总数量。
static int[] w = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
static int y = 1900, m = 1, d = 1;
public static void main(String[] args) {
int ans = 0;
while (y != 9999 || m != 12 | d != 31) {
if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) w[2] = 29;
else w[2] = 28;
if (check()) ans++;
d++;
if (d > w[m]) {
m++;
d = 1;
}
if (m > 12) {
m = 1;
y++;
}
}
if (check()) ans++;
System.out.println(ans);
}
static boolean check() {
int ans = 0;
int sum = 0;
// 计算年的和
int a = y;
while (a > 0) {
ans += a % 10;
a /= 10;
}
int b = m;
int c = d;
while (b > 0) {
sum += b % 10;
b /= 10;
}
while (c > 0) {
sum += c % 10;
c /= 10;
}
return ans == sum;
}