题目描述
对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。
请问从1900年1月1日至9999年12月31日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。
例如,2022年11月13日满足要求,因为2+0+2+2=(1+1)+(1+3)。
请提交满足条件的日期的总数量。
答案提交:
这是—道结果填空的题,你只需要算出结果后提交即可。
本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
输出:
70910
代码实现:
public class Main{ public static void main(String[] args) { int cnt = 0; //不同月份的天数不同 int[] days = new int[]{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; for (int i = 1900; i <= 9999; i++) { //年:i //判断是否是闰年:(能被4整除但不能被100整除)或者(能被400被整除) if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) { days[2] = 29;//如果是润年:二月份为29天 } else { days[2] = 28; } for (int j = 1; j <= 12; j++) { //月:j for (int k = 1; k <= days[j]; k++) { //日:k //计数:年份数位之和 是否等于 月份和天数的数位之和 if (sum(i) == sum(j) + sum(k)) { cnt++; } }//k }//j }//i //输出 System.out.println(cnt); } /** * 计算任意一个整数的数位之和 * * @param n 整数 * @return 返回数位之和 */ public static int sum(int n) { int res = 0;//结果 while (n != 0) {//原数为0时,跳出循环 res += n % 10;//取个数数字累加 n = n / 10;//原数除10 } return res; } }
猜你喜欢
网友评论
- 搜索
- 最新文章
- 热门文章