题目描述
对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从1900年1月1日至9999年12月31日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。
例如,2022年11月13日满足要求,因为2+0+2+2= (1+1)+(1 +3)。
请提交满足条件的日期的总数量。
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate beginDate = LocalDate.of(1900, 1, 1);
LocalDate endDate = LocalDate.of(9999, 12, 31);
int counter = 0;
while(beginDate.compareTo(endDate) <= 0) {
int year = beginDate.getYear();
int month = beginDate.getMonthValue();
int day = beginDate.getDayOfMonth();
if(sum(year) == sum(month) + sum(day)) {
counter++;
}
//递增一天
beginDate = beginDate.plusDays(1);
}
System.out.println(counter);
}
//计算整数的每一位之和
private static int sum(int number) {
int a = 0, b = 0, c = 0, d = 0;
d = number % 10;//个位
c = number / 10 % 10;//十位
b = number / 100 % 10 ;//百位
a = number / 1000 % 10;//千位
return a+b+c+d;
}
}
答案要求
这是—道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。