蓝桥杯刷题--幸运数字

幸运数字

        题目:

        解析:

        我们由题目可以知道,某个进制的哈沙德数就是该数和各个位的和取整为0.然后一个幸运数字就是满足所有进制的哈沙德数之和.然后具体就是分为以下几个步骤

        1. 我们先写一个方法,里面主要是用来判断,这个数在该进制下是否是哈沙德数

        2. 我们在main方法里面调用这个方法,来判断分别在二进制,十进制,八进制,十六进制的情况下的哈沙德数,然后我们取交集,取交集的写法我们直接可以用&&操作把上面的判断放在一个if里面进行判断.

        3.我们找的是第2023个,因此我们需要在2的步骤上加上一个循环,并且进行计数,如果满足2,那么计数就进行++,我们直到要找到第2023个数位置,因此我们可以把这个作为突破口,把它当成结束循环的条件.

package 幸运数字;
//哈沙德数就是在某个固定的进位制中,可以被各位的数字之和整除的正整数
//幸运数字就是分别满足十进制,二进制,八进制,十六进制的哈沙德数
//我们求第2023个
public class Test {
    public static void main(String[] args) {
        int count = 0;
        //TODO 2. 我们在main方法里面调用这个方法,来判断分别在二进制,十进制,八进制,十六进制的情况下的哈沙德数,然后我们取交集,取交集的写法我们直接可以用&&操作把上面的判断放在一个if里面进行判断.
        for (int i = 1; ; i++) {
            if (jud(i, 10) && jud(i, 2) && jud(i, 8)
                    && jud(i, 16)) {
                count++;
            }
            //TODO 3. 我们要找到第2023个,那么就在第2023个进行输出并结束循环即可
            if (count == 2023) {
                System.out.print(i);
                break;
            }
        }
    }
    //TODO 1.我们先写一个方法,里面主要是用来判断,这个数在该进制下是否是哈沙德数
    static boolean jud(int num, int base) {
        int initial = num;
        int sum = 0;
        while (num > 0) {
//            while (num/base != 0)

            sum = sum + num % base;
            num = num / base;

        }
        return initial % sum == 0;
    }
}

重点:

学会实现不同进制的哈沙德数的判断,里面就有取出各个位的操作

我们举个例子:如果是123,我们以十进制为例子,我们先取余得到第一位,123%10 = 3,然后我们要取出第二位的话要先通过取整操作,123/10=12,然后我们再对12进行取余操作,12%10=2,依次取出每一位,然后把每一位相加,判断条件,我测试了一下,一开始我写的是num/10!=0,如果我们num一开始就是1的话,我们根本就进不去这个循环,并且后续会出现算数异常,我们以num>0作为条件的依据,我认为,num再怎么取整也不可能位负数,然后为什么不能等于0呢?如果为0的话,那么就会陷入死循环了,num/10==0,这个会导致死循环,

在这个代码里面,我们值得学习的是它这个循环的终止条件

我们不知道到底什么时候是2023个满足上述所有条件的数字,因此我们的for循环里面的i的判断条件不能确定到第多少个,因此我们可以先省略,然后设置个计数器count,每当我们if判断条件满足的时候,我们就让count++,直到count等于2023为止,说明我们找到了第2023个幸运数字,然后我们打印它再进行break进行破除即可.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

推荐几本编程入门书目

对于编程入门,推荐以下几本书籍,这些书籍覆盖了不同的编程语言,适合零基础的学习者逐步掌握编程基础: 1. 《Python编程快速上手——让繁琐工作自动化》 特点:以简单易懂的方式介绍了Python的基础知识和编程概念&#…

【最新华为OD机试E卷-支持在线评测】构成正方形的数量(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

vue实现列表自动滚动(纯与原生方式)

Vue实现列表自动滚动(纯与原生方式) 源码放在最后!1.效果展示: 2.功能说明: 该滚动可能存在的Bug: 1.如果你写的大屏不是使用的接口轮询的方式可能会存在也页面空白的情况(需要手动刷新才能触发列表滚动),因为我使用的是监听数据的变化然后…

【C++】关联式容器——map和set的使用

文章目录 一、 序列式容器和关联式容器二、set的介绍1.set的构造和迭代器2.set的增删查3.接口lower_bound和upper_bound4.multiset和set的差异 三、map的介绍1.map的构造2.map的增删查3.multimap和map的差异 四、map和set相关OJ 一、 序列式容器和关联式容器 序列式容器&#…

WordPress添加meta标签做seo优化

一、使用function.php文件添加钩子函数添加 方法1、使用is_page()判断不同页面的page_id进行辨别添加不同页面keyword和description (1)通过页面前台源码查看对应页面的id (2)或者通过wordpress后台,点击页面列表&…

【网易云音乐】--源代码分享

最近写了一个网易云音乐的音乐实现部分,是通过JavaScript和jQuery实现的,具体效果大家可以参照下面的视频 源代码分享 - git地址: 网易云音乐源代码 下面将着重讲解一下音乐实现部分 视频有点模糊,不好意思,在b站上添加视频的时候…

Ping32:专业的终端安全管理解决方案

在当今数字化转型迅速发展的时代,终端安全管理已成为企业信息安全的重要环节。随着远程办公和移动设备的普及,企业面临着越来越多的网络安全挑战。Ping32作为一款专业的终端安全管理解决方案,以其卓越的性能和易用性,成为众多企业…

[Linux] Linux 进程程序替换

标题:[Linux] Linux 进程程序替换 个人主页水墨不写bug (图片来源于网络) 目录 O、前言 一、进程程序替换的直观现象(什么是进程程序替换?) 二、进程程序替换的原理 三、进程程序替换的函数&#xff08…

几种Word Embedding技术详解

NLP 中的词嵌入是一个重要术语,用于以实值向量的形式表示用于文本分析的单词。这是 NLP 的一项进步,提高了计算机更好地理解基于文本的内容的能力。它被认为是深度学习在解决具有挑战性的自然语言处理问题方面最重要的突破之一。 在这种方法中&#xff…

有了WPF后Winform还有活路吗?

近年来,随着技术的不断发展,Windows Presentation Foundation(WPF)和Windows Forms(WinForms)这两种技术在开发桌面应用程序方面一直备受关注。虽然WPF以其强大的功能和灵活性吸引了众多开发者,…

快速上手C语言【上】(非常详细!!!)

目录 1. 基本数据类型 2. 变量 2.1 定义格式 和 命名规范 2.2 格式化输入和输出(scanf 和 printf) ​编辑 2.3 作用域和生命周期 3. 常量 4. 字符串转义字符注释 5. 操作符 5.1 双目操作符 5.1.1 算数操作符 5.1.2 移位操作符 5.1.3 位操作符…

架构设计笔记-7-系统架构设计基础知识

目录 知识要点 单选 案例分析 1.质量属性 / 管道过滤器 / 数据仓库风格 2.面向对象风格 / 控制环路风格 3.软件架构风格 / 架构风格选择 4.体系结构方案对比 5.面向对象风格 / 基于规则风格 6.解释器风格 / 管道过滤器风格 7.面向对象风格 / 解释器风格 8.软件架构复…

【宝可梦】游戏

pokemmo https://pokemmo.com/zh/ 写在最后:若本文章对您有帮助,请点个赞啦 ٩(๑•̀ω•́๑)۶

OpenCV 环境配置

首先下载opencv,在opencv官网进行下载。 按照上面的步骤,点击进去 滑至底部,不切换至不同页,选择合适的版本进行下载(Window系统选择Windows版本进行下载)。 接下来以4.1.2版本为例: 点击之后会进入这个页面&#xff…

linux源码安装slurm以及mung和openssl

一、源码安装munge 1、编译安装munge (1)下载munge地址:https://github.com/dun/munge/releases (2)解压编译安装: 1 2 3 4 5 6 7 8 创建/data目录 复制文件munge-0.5.15.tar.xz 到/data目录下 tar -Jx…

闭着眼学机器学习——朴素贝叶斯分类

引言: 在正文开始之前,首先给大家介绍一个不错的人工智能学习教程:https://www.captainbed.cn/bbs。其中包含了机器学习、深度学习、强化学习等系列教程,感兴趣的读者可以自行查阅。 1. 算法介绍 朴素贝叶斯是一种基于贝叶斯定理…

C# 屏幕录制工具

屏幕录制工具 开发语音:C# vb.net 下载地址:https://download.csdn.net/download/polloo2012/89879996 功能:屏幕录制,声卡采集,麦克风采集。 屏幕录制:录制屏幕所有操作,并转换视频格式&…

uniapp-小程序开发0-1笔记大全

uniapp官网: https://uniapp.dcloud.net.cn/tutorial/syntax-js.html uniapp插件市场: https://ext.dcloud.net.cn/ uviewui类库: https://www.uviewui.com/ 柱状、扇形、仪表盘库: https://www.ucharts.cn/v2/#/ CSS样式&…

Springboot 接入 WebSocket 实战

Springboot 接入 WebSocket 实战 前言: WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。 简单理解: 1,常见开发过程中我们知道 Http协议,客户端…

详解安卓和IOS的唤起APP的机制,包括第三方平台的唤起方法比如微信

网页唤起APP是一种常见的跨平台交互方式,它允许用户从网页直接跳转到移动应用程序。 这种技术广泛应用于各种场景,比如让用户在浏览器中点击链接后直接打开某个应用,或者从网页引导用户下载安装应用。实现这一功能主要依赖于URL Scheme、Univ…