水仙花数python代码多种方式_水仙花数的三种解决方法(Python实现)

2023-10-30

先来了解一下什么是水仙花数。水仙花数是这样一个三位数:它的个位数、十位数、百位数的三次方之和,等于它自身。例如,153就是一个水仙花数,因为153=1^3+5^3+3^3。470也是一个水仙花数,因为470=4^3+7^3+0^3。

我们今天的任务就是,编程求100到999之间所有的水仙花数。

那么这个题目的关键就是,给定一个三位数abc,如何获得它的个位数c,十位数b,百位数a?

我们先来看第一种解决方案,也是最主流的解决方法:数位分离。

以153为例,我们先看,如何获得它的个位数3?只要%10就可以了:

153%10=3

通过模10运算,我们将个位数3分离了出来。

那么如何分离十位数5?先将十位数挪到个位,再利用%10,不就可以分离出来了吗?

通过除以10向下取整,可以将十位数挪到个位上来:

153//10=15

再利用模运算分离个位上的10即可:

15%10=5

这样我们就获得了十位数5.

同理,如果想得到153的百位数,将153除以100向下取整即可:

153 // 100 = 1

这就是数位分离的思想,先得到要验证的总数,再将各个位数分离出来。

代码实现如下:

for num in range(100,1000):

hundred=num//100

ten=(num//10)%10

single=num%10

if num==hundred**3+ten**3+single**3:

print('%d是一个水仙花数'%num)

这种方法逻辑很清晰,不过若是没见过这种解法的人,第一次怕是想不到数位分离的方法。其实,初学者更容易理解顺向思维的解法。

设个位数为a,十位数为b,百位数为c,则总数为a+10b+100c

判断a^3+b^3+c^3 == a+10b+100c即可。

for a in range(10):

for b in range(10):

for c in range(1,10):

sum = a + 10*b + 100*c

if a**3 + b**3 + c**3 == sum:

print("%d是一个水仙花数"%sum)

还有一种方法,可以利用字符串的特性,轻松地实现三个位数上的提取:

先将这个三位数转换成字符串,通过下标就可以提取个位、十位、百位数。再将提取出的字符转换成int型即可。

代码如下:

for num in range(100,1000):

s=str(num)

hundred=int(s[0])

ten=int(s[1])

digit=int(s[2])

if num==hundred**3+ten**3+digit**3:

print(num)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

水仙花数python代码多种方式_水仙花数的三种解决方法(Python实现) 的相关文章

  • 小程序从后台切到前台首页刷新机制 (Banner图 )

    问题 后台 banner 图 更新后 小程序首页不会自动更新 注明 这里只针对首页 其他页进入 onload即可 解决方案一 直接在page页面 每次onShow 都执行 解决方案二 app js 文件 app js App onLaunc
  • MongoDB报错:org.springframework.data.mongodb.UncategorizedMongoDbException: Exception authenticating

    org springframework data mongodb UncategorizedMongoDbException Exception authenticating MongoCredential Caused by com mo
  • Me and My Girlfriend靶机实验

    目录 靶机描述 准备 信息收集 一键三连IP 端口 目录扫描 ip 端口扫描 目录扫描 需要用到kali中的dirsearch 漏洞分析 渗透攻击 提权 这里我们可以尝试使用漏洞检查脚本 靶机的下载地址 Me and My Girlfrie
  • Ubuntu 18.04 镜像下载

    打开 官网 点击 下载 点击 Ubuntu桌面系统 点击 其他下载 鼠标滑到最下方 点击 Ubuntu 18 04 6 桌面版 64位 点击 保存
  • STM32 USB学习笔记9

    主机环境 Windows 7 SP1 开发环境 MDK5 14 目标板 STM32F103C8T6 开发库 STM32F1Cube库和STM32 USB Device Library 现在我们来分析VCP例程的最后一个文件USB设备类的us
  • LDAP概念和原理

    http blog sina com cn s blog 6151984a0100ey3z html 什么是目录服务 目录服务就是按照 树状存储信息的模式 目录服务的特点 目录服务与关系型数据库不同 目录服务的数据类型主要是字符型 而不是关
  • 如何通过redis 配置提高redis的性能

    redis的性能 我拿什么拯救 持久化选项 客户端输出缓冲限制 数据结构优化 压缩列表 网络配置 连接池 客户端输出缓冲限制 数据结构优化 压缩列表 网络配置 连接池 不冷战 不任性 多沟通 用舒服的方式喜欢和爱 知道承担 懂得分享 一起进
  • 组件扫描功能

    Spring提供了注解扫描 利用组件扫描注解和组件注解配合 可以自动扫描包空间自动创建Bean对象 减少编码 提高效率 配置文件 Configuration ComponentScan basePackages cn tedu Demo p
  • 数据结构——深度优先遍历(DFS)无向连通图

    以下是数据结构中关于深度优先遍历无向连通图的操作 编程风格参考严蔚敏版数据结构 其实深度优先遍历就是二叉树的先序遍历的推广 头文件以及宏定义 include
  • GitHub博客地址

    本人博客主要发布在GitHub Pages CSDN上的博客不再更新 我的GitHub博客地址 Hong s Bloghttps yalandhong github io 备用链接 https yalandhong vercel app h
  • IDEA解决运行项目虚拟内存溢出问题

    在我们运行一个比较大的项目的时候总是出现Caused by java lang OutOfMemoryError PermGen space的问题简单在网上查询了一下意思是内存溢出了 什么 我的电脑是8G运行内存 256的固态 你告诉这样都
  • bigquant量化平台笔记

    https bigquant com tutorial 宽客学院 https bigquant com community t topic 131694 AI量化策略快速理解 AI量化策略的目标 Label 默认使用股票收益率作为目标 第一
  • 关于antd的treeselect使用

    在表单中 我们可能会碰到这样的需求 比如我想将某一个物品或者资产 分配到某一个部门的员工下 那么我们需要在表单中做这样的配置 这样就会用到antd的treeselect组件 组件很好用 自带搜索框 可以大大的提高用户的可操作性 我们来看一下
  • 【CentOS安装配置Jupyter 】

    CentOS安装配置Jupyter 功能快捷键 合理的创建标题 有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个表格 设定内容居中 居左 居右 SmartyPants 创建一个自
  • 攻防世界之misc1

    攻防世界之misc1 首先这题非常的考研脚本实力 他题目没有下载文件 只有一个值 d4e8e1f4a0f7e1f3a0e6e1f3f4a1a0d4e8e5a0e6ece1e7a0e9f3baa0c4c4c3d4c6fbb9e1e6b3e3b
  • Nginx Upstream负责均衡的实现方案

    nginx中upstream实现负责均衡的几种方式 1 轮询 weight 1 默认选项 当weight不指定时 各服务器weight相同 每个请求按时间顺序逐一分配到不同的后端服务器 如果后端服务器down掉 能自动剔除 upstream
  • commons math用户手册翻译(一)

    翻译源址 http commons apache org proper commons math userguide index html 1 math包版本3 6 2 commons math包解决哪些问题 math包由一组数据和统计的包
  • jmavsim使用说明

    一 启动 在px4源码目录下输入 make px4 sitl jmavsim 二 基础操作 在操作界面上按F1键 会弹出操作说明 操作说明如下 按照说明可以控制飞机移动 视角控制 F 第一人称视角 S 地面固定视角 G 稳定云台视角 Z 切
  • jsp 页面选项卡

随机推荐

  • 使用阿里巴巴的EasyExcel操作Excel

    引入依赖
  • 使用TortoiseGit执行merge/rebase操作

    如果使用git 相信大家比较多的使用merge 对于rebase则少有陌生 相信刚使用git不久的同学会有一个困惑 经常使用merge会造成破窗效应 查阅log时会掺杂了大量无用的小提交 起初也对此习以为常 毕竟svn就是这样 使用reba
  • js中background-position 无效

    css中正确书写background position x y 坐标之间有空格 然而在写js的时候如果粗心会忘记第一个 px 后面加个空格 正确js书写应该是backgroundposi x px y px
  • Docker基本概念、linux

    Docker的基本概念 一 认识容器 1 1 容器是什么 1 2 对比容器和虚拟机 1 2 1 虚拟化的差异 1 2 2 资源利用总结 二 Docker基本概念 2 1 Docker是什么 2 2 Docker 的思想与核心 2 3 Doc
  • Qt-常用数据类型

    常用基本数据类型 类型名称 注释 备注 qint8 signed char 有符号8位数据类型 qint16 signed short 有符号16位数据类型 qint32 signed int 有符号32位数据类型 qint64 long
  • php7 发送邮件,使用PHP发送邮件的两种方法

    使用PHP发送邮件的两种方法 如何使用使用PHP发送邮件呢 想要知道的朋友 以下是为大家分享的使用PHP发送邮件的两种方法 供大家参考借鉴 欢迎浏览 一 使用PHP内置的mail 函数 看了一下手册 就直接开始写代码了 如下 to test
  • 超人气思维导图XMind新年新版本,这6个新功能你一定要看

    2018 年初 XMind公司推出了这款花了三年时间重写了每一行代码的新旗舰产品XMind ZEN 经过不断的优化和完善 终于成为了一款全平台 功能丰富的优秀思维导图软件 如今已然成为国内人气思维导图软件 噔噔噔 今年XMind ZEN正式
  • Java面向对象编程

    关于抽象类与最终类 下列说法错误的是 A 抽象类能被继承 最终类只能被实例化 B 抽象类和最终类都可以被声明使用 C 抽象类中可以没有抽象方法 最终类中可以没有最终方法 D 抽象类和最终类被继承时 方法可以被子类覆盖 答案 D 已知表达式i
  • 【wpf,C#】wpf访问连接Oracle数据库的详细过程及代码(第2种方法)

    注 之前写了一篇很详细的wpf连接Oracle的过程及代码 这一篇是另外一种方法 文件是我们自己写的 小伙伴们 亦可以完成此功能 1 添加引用文件 System Data OracleClient 如图 2 新建一个类 我这里命名为 MyO
  • 【JavaScript】(四)创建对象的7种模式

    面向对象的语言有一个标志 那就是他们都有类的概念 而通过类可以创建多个具有相同属性和方法的对象 ECMAScript的对象没有类的概念 因此它的对象也与基于类的语言对象有所不同 早期JavaScript开发人员创建类的方法是创建一个Obje
  • 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。

    题目信息 给定一个整数数组 nums 和一个整数目标值 target 请你在该数组中找出 和为目标值 的那 两个 整数 并返回它们的数组下标 你可以假设每种输入只会对应一个答案 但是 数组中同一个元素不能使用两遍 你可以按任意顺序返回答案
  • 2021-2022学年度第二学期21级Java程序设计理论模拟考试

    说明 由于看pdf太难受了 重新编辑好放到博客上 方便自己复习 正确答案加粗标红 考试试卷 页码 1 4 试卷名称 2021 2022学年度第二学期21级Java程序设计理论模拟考试 3 4 6班 期末考试考试课程 Java语言程序设计 考
  • SSM框架组建之业务逻辑与总体架构规划

    SSM框架组建之总体架构规划与项目发布 第一步 项目整体逻辑设计 第二步 DAO层框架构建 第三步 构建Service层 第四步 web 层设计 第五步 SSM 项目的打包与发布 win10 从 Tomcat 服务器到局域网 1 Tomca
  • 炉石传说 古墓惊魂 灾祸领主 英雄技能

    英雄难度 维希 鱼人灾祸领主 第一阶段 Made of Murlocs来自鱼人Passive Hero Power You are Immune After a Murloc dies lose 3 Health 被动英雄技能 免疫 在一个
  • this.getClass().getClassLoader().getResource("");

    lt 1 gt 调用对象的getClass 方法是获得对象当前的类类型 这部分数据存在方法区中 lt 2 gt 类类型上调用getClassLoader 方法是得到当前类型的类加载器 我们知道在Java中所有的类都是通过类加载器加载到虚拟机
  • Angular Material 每个版本的不同

    Angular Material 在每个版本中都会引入一些新的功能 修复 bug 并进行性能改进 以下是一些不同版本的 Angular Material 的主要变化 1 Angular Material 2 这是 Angular Mater
  • centos7安装python3及问题解决

    centos7安装python3及问题解决 Centos7中默认的Python版本为2 7 在2020年python官方将不再支持2 7版本的python 所以使用3 x版本的python是必要的 下载地址 https www python
  • 如何管理一个技术团队

    一 流程规范 迭代流程规范 制定迭代流程规范 详情见 https www cnblogs com expiator p 17149931 html 编码规范 可以使用 阿里巴巴java开发手册 规范代码 二 考核 研发考核 1 优秀的考核方
  • 计算机绘图中有六种方法绘圆,计算机绘图3_5-6章.ppt

    计算机绘图3 5 6章 第5章 规划与管理图层 5 3 使用图层 当前主流的图形 图像处理软件 Flash UG Potoshop 都具有图层概念 AutoCAD也不例外 图层好比是一张透明的纸 图形被画在其中 如图示 图层A上放置了剖面线
  • 水仙花数python代码多种方式_水仙花数的三种解决方法(Python实现)

    先来了解一下什么是水仙花数 水仙花数是这样一个三位数 它的个位数 十位数 百位数的三次方之和 等于它自身 例如 153就是一个水仙花数 因为153 1 3 5 3 3 3 470也是一个水仙花数 因为470 4 3 7 3 0 3 我们今天