问题描述
对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从 1900 年 11 月 11 日至 9999 年 12 月31 日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。
例如,2022 年 11 月 13 日满足要求,因为 2+0+2+2=(1+1)+(1+3) 。
请提交满足条件的日期的总数量。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
运行限制
- 最大运行时间:1s
- 最大运行内存: 256M
import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改
import java.time.*;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
long ans=0;
LocalDate start=LocalDate.parse("1900-01-01");
LocalDate end=LocalDate.parse("9999-12-31");
while(!(start.equals(end))){
if(check(start)==1){
ans++;
}
start = start.plusDays(1);
}
System.out.println(ans);
scan.close();
}
public static int check(LocalDate s){
int flag=0;
String start=s.toString();
char a=start.charAt(0);
char b=start.charAt(1);
char c=start.charAt(2);
char d=start.charAt(3);
char aa=start.charAt(5);
char bb=start.charAt(6);
char cc=start.charAt(8);
char dd=start.charAt(9);
int a1=Integer.parseInt(String.valueOf(a));
int a2=Integer.parseInt(String.valueOf(b));
int a3=Integer.parseInt(String.valueOf(c));
int a4=Integer.parseInt(String.valueOf(d));
int a5=Integer.parseInt(String.valueOf(aa));
int a6=Integer.parseInt(String.valueOf(bb));
int a7=Integer.parseInt(String.valueOf(cc));
int a8=Integer.parseInt(String.valueOf(dd));
if(a1+a2+a3+a4==a5+a6+a7+a8){
flag=1;
}
return flag;
}
}