题目描述(1)
小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。
请计算这次考试的最高分、最低分和平均分。
输入描述
输入的第一行包含一个整数 n(1≤n≤104)n (1≤n≤104),表示考试人数。
接下来 n行,每行包含一个 0 至 100 的整数,表示一个学生的得分。
输出描述
输出三行。
第一行包含一个整数,表示最高分。
第二行包含一个整数,表示最低分。
第三行包含一个实数,四舍五入保留正好两位小数,表示平均分。
输入输出样例
示例
输入
7 80 92 56 74 88 99 10
输出
99 10 71.29
运行限制
-
最大运行时间:1s
-
最大运行内存: 256M
解题结果
Java
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 读取考试人数
int n = scan.nextInt();
// 初始化最高分和最低分为可能的最小和最大值
int maxScore = Integer.MIN_VALUE;
int minScore = Integer.MAX_VALUE;
// 初始化总分
int totalScore = 0;
// 循环读取每个学生的得分
for (int i = 0; i < n; i++) {
int score = scan.nextInt();
// 更新最高分和最低分
maxScore = Math.max(maxScore, score);
minScore = Math.min(minScore, score);
// 累加总分
totalScore += score;
}
// 计算平均分
double averageScore = (double) totalScore / n;
// 输出结果
System.out.println(maxScore);
System.out.println(minScore);
System.out.printf("%.2f%n", averageScore);
scan.close();
}
}
题目描述(2)
对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从 19001900 年 11 月 11 日至 99999999 年 1212 月 3131 日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。
例如,20222022 年 1111 月 1313 日满足要求,因为 2+0+2+2=(1+1)+(1+3)2+0+2+2=(1+1)+(1+3) 。
请提交满足条件的日期的总数量。
答案提交
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
运行限制
-
最大运行时间:1s
-
最大运行内存: 256M
解题结果
Java
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int count = 0;
// 遍历日期范围从 1900 年 11 月 11 日至 9999 年 12 月 31 日
for (int year = 1900; year <= 9999; year++) {
for (int month = 1; month <= 12; month++) {
for (int day = 1; day <= 31; day++) {
// 检查是否为有效日期
if (isValidDate(year, month, day)) {
// 计算年、月、日的数位数字之和
int yearDigitSum = calculateDigitSum(year);
int monthDigitSum = calculateDigitSum(month);
int dayDigitSum = calculateDigitSum(day);
// 检查是否满足条件
if (yearDigitSum == monthDigitSum + dayDigitSum) {
count++;
}
}
}
}
}
// 输出结果
System.out.println(count);
scan.close();
}
// 判断是否为有效日期
private static boolean isValidDate(int year, int month, int day) {
if (month < 1 || month > 12 || day < 1 || day > 31) {
return false;
}
if ((month == 4 || month == 6 || month == 9 || month == 11) && day > 30) {
return false;
}
if (month == 2) {
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
return day <= 29;
} else {
return day <= 28;
}
}
return true;
}
// 计算数位数字之和
private static int calculateDigitSum(int num) {
int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
return sum;
}
}