在竞争编程的世界中,数字范围问题是一个常见的考察题目。今天,我们以“AcWing算法基础课-789数的范围”这一题为例,来探讨如何使用Java来解决这个问题。

问题描述

在这个问题中,我们需要查找所有在给定范围内的789数。什么是789数呢?简单来说,789数是指一个整数中包含数字7、8和9的数字。我们需要计算出在从 lr 范围内,满足这个条件的整数数量。

思路分析

解决这个问题的思路可以分为以下几个步骤:

  1. 读取输入:从标准输入获取范围 lr
  2. 判断789数的条件:设计一个方法来判断一个数是否是789数。
  3. 遍历范围:遍历从 lr 的数字,利用上面的方法判断每个数字是否是789数。
  4. 计数统计:我们需要一个计数器来统计符合条件的数字总数。

代码实现

下面是用Java实现的代码示例:

import java.util.Scanner;

public class Main {
    // 判断数字是否是789数
    public static boolean is789Number(int num) {
        boolean has7 = false;
        boolean has8 = false;
        boolean has9 = false;

        // 将数字拆分为各个位
        while (num > 0) {
            int digit = num % 10;
            if (digit == 7) has7 = true;
            if (digit == 8) has8 = true;
            if (digit == 9) has9 = true;
            num /= 10; // 去掉最后一位
        }

        return has7 && has8 && has9; // 三个条件都满足
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 输入范围
        System.out.print("请输入范围的下界 l: ");
        int l = scanner.nextInt();
        System.out.print("请输入范围的上界 r: ");
        int r = scanner.nextInt();

        int count = 0;

        // 遍历范围
        for (int i = l; i <= r; i++) {
            if (is789Number(i)) {
                count++; // 满足条件,计数加一
            }
        }

        // 输出结果
        System.out.println("在范围 [" + l + ", " + r + "] 中的789数数量是: " + count);
    }
}

代码解析

  1. is789Number方法
  2. 用于判断一个数字是否包含7、8和9。我们通过循环拆分数字的每一位,并设置三个布尔变量来记录这三种数字是否出现。

  3. 主函数

  4. 首先创建了Scanner对象来读取输入。
  5. 然后输入范围的上下限lr
  6. 通过一个for循环遍历范围内的每一个数字,调用is789Number来检查该数字是否是789数。如果是,则计数器加一。

  7. 输出结果

  8. 最后输出在给定范围内的789数的总数。

总结

通过上面的分析和实现,我们可以清晰地看出如何在Java中实现此类问题的解决方案。这样的题目不仅锻炼了我们的编程能力,也提高了我们对数字的处理能力。在实际解决问题时,我们总是要关注效率与准确性。在未来的练习中,继续深入理解算法原理,将有助于我们在算法领域走得更远。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部