蓝桥杯 | 报数游戏 - 第十五届蓝桥杯大赛软件赛省赛Java 大学 B 组真题
问题描述
小蓝和朋友们在玩一个报数游戏。由于今年是 2024 年,他们决定要从小到大轮流报出是 20 或 24 倍数的正整数。前 10 个被报出的数是:20, 24, 40, 48, 60, 72, 80, 96, 100, 120。请问第 202420242024 个被报出的数是多少?
解题思路
方案一
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
long targetCount = 10L; // 目标计数
long count = 0; // 满足条件的数的计数
long number = 1; // 当前检查的数
while (count < targetCount) {
number++;
if (number % 20 == 0 || number % 24 == 0) {
count++;
}
}
System.out.print("第 " + targetCount + " 个数是:" + number);
scan.close();
}
}
由于第 202420242024 个数太大,所以结果运行超时。
方案二
因为这是一道结果填空的题,所以只算出结果也是可以的。首先列举出前 40 个 20 或者 24 倍数的正整数:
第 1-10 个: 20 24 40 48 60 72 80 96 100 120
第 11-20 个:140 144 160 168 180 192 200 216 220 240
第 21-30 个:260 264 280 288 300 312 320 336 340 360
第 31-40 个:380 384 400 408 420 432 440 456 460 480
由此可以看出规律,当 n 是偶数时,第 n 个数是 n * 12。
所以,第 202420242024 个数是 202420242024 * 12
public class Main {
public static void main(String[] args) {
System.out.print(202420242024L * 12);
}
}
运行结果如下: