华为OD机试真题 Java 实现【水仙花数】【2022Q4 100分】

news2024/12/23 22:55:21

一、题目描述

所谓水仙花数,是指一个n位的正整数,其各位数字的n次方和等于该数本身。

例如153是水仙花数,153是一个3位数,并且153 = 1^3 + 5^3 + 3^3。

二、输入描述

第一行输入一个整数n,表示一个n位的正整数。n在3到7之间,包含3和7。

第二行输入一个正整数m,表示需要返回第m个水仙花数。形如HH:SS字符串,表示原始输入。

三、输出描述

返回长度是n的第m个水仙花数。个数从0开始编号。

若m大于水仙花数的个数,返回最后一个水仙花数和m的乘积。

若输入不合法,返回-1。

四、解题思路

  1. 读取输入的n和m;
  2. 检查n的范围是否在3到7之间,如果不在范围内,输出-1并结束程序;
  3. 根据n的值计算出范围内的最小值和最大值,最小值为10的(n-1)次方,最大值为10的n次方减1;
  4. 初始化一个HashMap用于存储水仙花数,键为水仙花数的序号,值为水仙花数本身;
  5. 初始化计数器count为0,用于记录水仙花数的个数;
  6. 初始化变量lastNum为0,用于记录最后一个水仙花数;
  7. 遍历从最小值到最大值的范围,对每个数进行如下操作:
    • 调用check方法检查该数是否为水仙花数,如果是,则将其添加到HashMap中,键为count,值为当前数,然后将count加1。
    • 如果当前数大于lastNum,则更新lastNum的值为当前数。
  8. 根据HashMap判断第m个水仙花数是否存在,如果存在,则输出对应的值;如果不存在,则输出lastNum乘以m的值;

五、Java算法源码

public static void main(String[] args) {
    calculate();
}

private static void calculate() {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    if (n >= 3 && n <= 7) {
        int m = sc.nextInt();
        int temp = 1;
        for (int i = 0; i < n; i++) {
            temp *= 10;
        }
        int min = temp / 10;
        int max = temp - 1;
        Map<Integer, Integer> data = new HashMap<>();
        int count = 0;
        int lastNum = 0;
        for (int i = min; i <= max; i++) {
            if (check(i, n)) {
                data.put(count++, i);
                if (i > lastNum) {
                    lastNum = i;
                }
            }
        }
        if (data.containsKey(m)) {
            System.out.println(data.get(m));
        } else {
            System.out.println(lastNum * m);
        }
    } else {
        System.out.println(-1);
    }
}

private static boolean check(int a, int n) {
    boolean flag = false;
    String[] numStrs = String.valueOf(a).split("");
    int[] data = new int[numStrs.length];
    for (int i = 0; i < numStrs.length; i++) {
        data[i] = Integer.parseUnsignedInt(numStrs[i]);
    }
    int sum = 0;
    for (int i = 0; i < n; i++) {
        sum += calcute(data[i], n);
    }
    if (sum == a) {
        flag = true;
    }
    return flag;
}

private static int calcute(int a, int b) {
    int result = 1;
    for (int i = 0; i < b; i++) {
        result *= a;
    }
    return result;
}

六、效果展示

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【基站维修工程师】【2023Q1 200分】,附详细解题思路

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/604192.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python教程:如何创建一个Rectangle类

Python教程&#xff1a;如何创建一个Rectangle类 Python是一种简单易学的编程语言&#xff0c;适用于各种应用场景。在本教程中&#xff0c;我们将探讨如何使用Python创建一个Rectangle类。Rectangle类是一个简单的图形类&#xff0c;用于描述长方形的特征&#xff0c;如宽度和…

双域多尺度融合深度神经网络的PPG生物特征识别研究

目录 前言概述研究背景PPG存在的问题本文的创新点数据处理数据预处理数据分割特征提取 模型结构LSTM网络多尺度特征提取模块双域注意模块识别与验证 实验部分数据集识别指标 前言 本文是根据一篇论文总结写的。 论文英文名为&#xff1a;Dual-domain and Multiscale Fusion D…

Redis底层学习(三)—存储类型-List篇

文章目录 特点具体服务器操作命令具体操作应用场景 特点 适⽤场景&#xff1a;消息队列。 它的特点就是内部元素有序、重复&#xff0c;并且插⼊和删除很快 O(1) &#xff0c;但是查找却很慢 O(n) 。功能⽀持队列和栈操作。 具体服务器操作命令 左侧插⼊元素&#xff1a; LP…

基于同步矩阵的多通道脑电功能连接分析_kaic

摘 要 本文研究了基于同步矩阵的多通道脑电功能连接分析方法&#xff0c;旨在揭示脑区之间的功能联系。首先&#xff0c;介绍了脑电信号的产生和特点&#xff0c;以及功能连接分析的概念和方法。其次&#xff0c;详细讨论了多通道脑电数据的采集和预处理流程&#xff0c;包括…

JAVA并发学习

1 基础准备 1.1 并发与并行 并发是不同的代码块交替执行&#xff0c;也就是交替可以做不同的事情。 并行是不同的代码块同时执行&#xff0c;也就是同时可以做不同的事情。 根据CPU 核数&#xff0c;线程运行是不同的 单核CPU&#xff08;微观串行&#xff0c;宏观并行&…

YOLOV5 + PYQT5双目测距(一)

YOLOV5 PYQT5双目测距 1. 测距源码2. 测距原理3. PYQT环境配置4. 实验结果4.1 界面1&#xff08;简洁版&#xff09;4.2 界面2&#xff08;改进版&#xff09; 1. 测距源码 详见文章 YOLOV5 双目测距&#xff08;python&#xff09; 2. 测距原理 如果想了解双目测距原理&a…

Stable Diffusion 指定模型人物,Lora 训练全流程

简介 在使用 Stable Diffusion 的时候&#xff0c;可以选择别人训练好的 Lora&#xff0c;那么如何训练自己的 Lora&#xff0c;本篇文章介绍了介绍了如何训练Lora&#xff0c;如何从训练的模型中选择好的模型&#xff0c;如何在 Stable Diffusion 中使用。 闲话不多说&#…

CUDA编程接口详解

CUDA编程接口详解 本文将详细介绍NVIDIA CUDA编程指南第3章&#xff08;编程接口&#xff09;中的核心概念&#xff0c;例如NVCC编译器、CUDA运行时、版本管理和兼容性、计算模式、模式切换以及Windows下的Tesla计算集群模式。以下是本文的大纲&#xff1a; 文章目录 CUDA编程…

《斯坦福数据挖掘教程·第三版》读书笔记(英文版)Chapter 11 Dimensionality Reduction

来源&#xff1a;《斯坦福数据挖掘教程第三版》对应的公开英文书和PPT Chapter 11 Dimensionality Reduction Let M be a square matrix. Let λ be a constant and e a nonzero column vector with the same number of rows as M. Then λ is an eigenvalue of M and e is t…

快手三面全过了,却因为背调时leader手机号造假,导致offer作废了!

这是一个悲伤的故事&#xff1a; 快手本地三面全过了&#xff0c;但因为背调时leader手机号造假&#xff0c;导致offer作废了。 楼主感叹&#xff1a;大家背调填写信息时&#xff0c;一定要慎重再慎重&#xff0c;不要重复他的悲剧&#xff01; 网友愤慨&#xff0c;照这么说&a…

【Nginx 优化与防盗链】

目录 一、Nginx 服务优化1、配置Nginx 隐藏版本号2、修改用户与组3、缓存时间4、日志切割小知识 二、Nginx 深入优化1、连接超时2、更改进程数3、配置网页压缩4、配置防盗链 一、Nginx 服务优化 1、配置Nginx 隐藏版本号 可以使用 Fiddler 工具抓取数据包&#xff0c;查看 Ng…

UniApp全局弹窗

一、设计思路 1、创建一个弹窗页面组件 2、配置page.json&#xff0c;使页面跳转是在当前界面展示 3、定义uni全局全局属性 4、解决多个弹窗同时使用的冲突问题 注意&#xff1a;此方案不支持多个弹窗并存&#xff0c;有且仅有一个会展示&#xff0c;当前弹窗展示并关闭上一个弹…

连锁药店系统:如何提高效率和客户满意度?

连锁药店系统是一种用于提高效率和客户满意度的软件系统&#xff0c;它能够管理多个药店的日常营运。通过这种系统&#xff0c;药店可以更好地管理库存、员工、销售和客户信息等方面&#xff0c;从而提高整体的经营效率。 首先&#xff0c;连锁药店系统能够帮助药店管理库存。系…

黑马Redis视频教程实战篇(六)

目录 一、附近商户 1.1、GEO数据结构的基本用法 1.2、导入店铺数据到GEO 1.3、实现附近商户功能 二、用户签到 2.1、BitMap功能演示 2.2、实现签到功能 2.3、签到统计 2.4、关于使用bitmap来解决缓存穿透的方案 三、UV统计 3.1、HyperLogLog 3.2、测试百万数据的统…

I.MX6ull 中断 二 (按键驱动蜂鸣器)

按键中断 KEY0 &#xff08;UART1_CTS 引脚&#xff09;触发蜂鸣器 1 修改start.S 添加中断相关定义 中断向量表 .global _start /* 全局标号 *//** 描述&#xff1a; _start函数&#xff0c;首先是中断向量表的创建* 参考文档:ARM Cortex-A(armV7)编程手册V4.0.pdf P…

【花雕学AI】ChatGPT帮我快速优化标题:古老的非洲部落,有一种神奇的超音速烫脚舞

关于非洲烫脚舞&#xff0c;直接看看ChatGPT的许多创意&#xff0c;一般人确实想不到&#xff1a; 部落文化的声动震波 非洲之歌:部落的音速节奏 非洲土著的音速脚掌传奇 古老部落的震人心魂之舞 非洲红土之声:脚掌舞的激情 非洲神秘部落的超音速脚掌舞 仙踪般的部落音乐…

chatgpt赋能python:Python绘制函数曲线:创造出令人惊叹的图形

Python绘制函数曲线&#xff1a;创造出令人惊叹的图形 随着越来越多的人开始关注数据可视化&#xff0c;Python成为了一种被广泛使用的工具&#xff0c;用于创建各种图形&#xff0c;包括函数曲线。Python图形库的灵活性和适用性使得它成为数据科学和工程领域中最受欢迎的编程…

如何用 ChatGPT 一句话生成 Web 应用?

原型系统的开发对很多不会编程的人来说&#xff0c;原本确实是一道门槛&#xff0c;而且看似难以逾越。而现在&#xff0c;障碍突然间就消失了。 插件 ChatGPT 现在有了一个内容比较丰富的插件系统&#xff0c;而且 Plus 用户已经不再需要填表申请后漫长等待&#xff0c;直接就…

英雄算法联盟 | 六月算法集训顺利开始

文章目录 前言一、集训规划二、星友的反馈1、有觉得题目简单重新找回了自信的2、有拿到题不管三七二十一疯狂输出的3、有为了完成当天作业奋斗到凌晨的4、有自己悟出了坚持就是胜利的道理的5、有发现身边人都在跑而跃跃欲试的6、有上班摸鱼刷题只因为了赶进度的7、有看到大家都…

【微信小程序开发】第 2 节 - 注册小程序开发账号

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、注册小程序开发账号 3、总结 1、缘起 开发微信小程序从大的方面来说主要分为三步&#xff1a; ① 注册小程序开发…