蓝桥杯 | 报数游戏 - 第十五届蓝桥杯大赛软件赛省赛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 个数太大,所以结果运行超时。
image1

方案二

因为这是一道结果填空的题,所以只算出结果也是可以的。首先列举出前 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);
    }
}

运行结果如下:
image2

原题网址

https://www.lanqiao.cn/problems/19698/learning/

posted @ 2024-12-08 14:16  意气风发胡小图  阅读(43)  评论(0编辑  收藏  举报