博客
关于我
杭电oj 2010 java实现
阅读量:485 次
发布时间:2019-03-07

本文共 1333 字,大约阅读时间需要 4 分钟。

以下是我关于查找特定范围内水仙花数的解决方案:

  • 问题理解

    水仙花数是一个三位数,其各位数字的立方和等于它本身。例如,153 = 1³ + 5³ + 3³ = 153。

  • 确定范围

    三位数i满足100 ≤ i ≤ 999。为了提高效率,可以将百位数设定在1到9之间,十位和个位设定在0到9之间。这减少了需要检查的数字数量。

  • 优化方法

    • 遍历每个三位数i,从100到999。
    • 拆分i的各位数字,分别计算它们的立方和。
    • 检查立方和是否等于i本身。如果是,则记录该数字。
  • 代码实现

    使用Java编写代码,以读取输入的起始值m和终止值n,遍历在m到n之间的所有整数i,检查其是否为水仙花数。

  • 处理细节

    • 确保正确地分解各位数字和计算立方和,避免计算错误。
    • 适当地处理输入过出的m和n是否在三位数范围内。
    • 如果找到的水仙花数为空,输出“no”;否则,逐个输出找到的数。
  • 测试与验证

    验证代码的正确性,可以手动测试几个已知的水仙花数,如153、370、371、407,确保正确识别。

  • 以下是实现代码:

    import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        int m = sc.nextInt();        int n = sc.nextInt();        StringBuilder sb = new StringBuilder();        for (int i = m; i <= n; i++) {            int a = i / 100;            int b = (i / 10) % 10;            int c = i % 10;            int sum = a * a * a + b * b * b + c * c * c;            if (sum == i) {                if (sb.length() > 0) sb.append("\n");                sb.append(i);            }        }        if (sb.length() == 0) {            System.out.println("no");        } else {            System.out.print(sb.toString());        }    }}

    代码解释

    • 输入处理:从标准输入读取m和n,确定范围。
    • 遍历范围:从m到n遍历每个数字i。
    • 数字拆分:将i拆分为百位数a、十位数b和个位数c。
    • 立方和计算:计算各位数字的立方和,检查是否等于i。
    • 结果收集:将符合条件的水仙花数收集到一个字符串中,一个新线加隔离不同数字。
    • 输出结果:如果没有找到水仙花数则输出“no”,否则输出收集的数字。

    这个解决方案简洁高效,适用于查找三位数范围内的水仙花数。

    转载地址:http://dnjcz.baihongyu.com/

    你可能感兴趣的文章
    ONI文件生成与读取
    查看>>
    onlyoffice新版5.1.2版解决中文汉字输入重复等问题
    查看>>
    oobbs开发手记
    查看>>
    OPEN CASCADE Curve Continuity
    查看>>
    Open Graph Protocol(开放内容协议)
    查看>>
    Open vSwitch实验常用命令
    查看>>
    Open WebUI 忘了登入密码怎么办?
    查看>>
    open-vm-tools-dkms : 依赖: open-vm-tools (>= 2:9.4.0-1280544-5ubuntu3) 但是它将不会被安装
    查看>>
    Openbox-桌面图标设置
    查看>>
    opencart出现no such file or dictionary
    查看>>
    opencv Mat push_back
    查看>>
    opencv videocapture读取视频cap.isOpened 输出总是false
    查看>>
    opencv waitKey() 函数理解及应用
    查看>>
    OpenCV 中的图像转换
    查看>>
    OpenCV 在 Linux 上的 python 与 anaconda 无法正常工作.收到未实现 cv2.imshow() 的错误
    查看>>
    Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)上
    查看>>
    opencv 模板匹配, 已解决模板过大程序不工作的bug
    查看>>
    OpenCV 错误:(-215)size.width>0 &&函数imshow中的size.height>0
    查看>>
    opencv&Python——多种边缘检测
    查看>>
    opencv&python——高通滤波器和低通滤波器
    查看>>