问题描述
对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从 19001900 年 11 月 11 日至 9999 年 12 月 31 日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。
例如,2022 年 11 月 13 日满足要求,因为 2+0+2+2=(1+1)+(1+3)。
请提交满足条件的日期的总数量。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
运行限制
最大运行时间:1s
最大运行内存: 256M
题解:
我采用的是纯暴力; 3层for循环 ;最外层用于月份遍历、中间层遍历月份 、内层天数遍历;
单独写出一个方法用于年份每个数相加 和 月份天数每个数相加 ,月份* 100 + 天数
注意判断闰年,闰年会多几天
(0 == i % 4 && i % 100 != 0) || (0 == i % 400)
闰年:
(1)四年一闰百年不闰:即如果year能够被4整除,但是不能被100整除,则year是闰年。
(2)每四百年再一闰:如果year能够被400整除,则year是闰年。
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
int ans = 0;
//在此输入您的代码...
int month[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
for(int i = 1900 ; i <= 9999 ; i++){
int sum1 = sum(i);
for(int j = 1 ; j <= 12 ; j++){
if(j == 2 && (0 == i % 4 && i % 100 != 0) || (0 == i % 400)) {
month[2] = 29;
}else month[2] = 28;
for(int y = 1 ; y <= month[j] ; y++){
int x = j *100 + y;
int sum2 = sum(x);
if(sum1 == sum2) ans++;
}
}
}
System.out.println(ans);
}
static int sum (int n){
int sum = 0;
while(n != 0){
sum += n % 10;
n /= 10;
}
return sum;
}
}
问题描述
在同一天中, 从上午 6 点 13 分 22 秒到下午 14 点 36 分 20 秒, 钟表上的 分针和秒针一共重合了多少次?
注意时针、分针、秒针都围绕中心敳匀速运动。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一 个整数, 在提交答案时只填写这个整数, 填写多余的内容将无法得分。
运行限制
最大运行时间:1s
最大运行内存: 512M
题解:
想想什么情况下分针和秒针重合 、 当第61秒的时候场合;
算出该区间的所有秒 / 61;
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
int times = (14-6) * 60 * 60 + (36 - 13) * 60 - 2;
System.out.println(times/61);
scan.close();
}
}
AC截图