一个数三位立方和相加等于本身_【题解信奥】打印水仙花数(粉丝求助)

db3e4c4ffd76a9e364949a62719eed27.png前言

本题来源于粉丝的求助。

0dab6d2448b17dab86124e231fdad7ae.png

关于粉丝求助的问题,我们会按照先后顺序来解答,并从公众号后台回复答案和解析。

930d53bc87d2c6ded63a3a276e6fd75e.png 0c1c974334c828f3467fab700c2cb3ad.png打印水仙花数 时间限制: 1000 ms    内存限制: 65536 KB

【题目描述】

打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153 = 1³+5³+3³。

【输入】

【输出】

一行一个水仙花水。

【输入样例】

【输出样例】

说明

主要考查水仙花数的相关知识。

思路分析

水仙花数是一个三位数,一个水仙花数=百位数字的立方+十位数字的立方+个位数字的立方。

可以这么思考,从所有的三位数中,逐个判断是否为水仙花数,如果是则输出,否则换下一个三位数。

先循环遍历所有的三位数,代码如下:

e0a76617aad0f9b3bfdb2630f5d76eb7.png

变量i代表当前的三位数。接着对变量i进行拆分,即分别取出变量i的百位、十位、个位数字。代码如下:

d878f2085dacb32acc41b03f472d619a.png

此时,变量a是百位数字,变量b是十位数字,变量c是个位数字。

关于如何取出一个多位数的每一位数字,详细教程可参考下面文章:

【信奥】如何深刻理解除法和取模运算(基础篇)

要取出个位数字,只要i%10即可。

要取出十位以上的数字,可以这么思考:把要取出的某位数字变成个位数字,那么%10就可以取出。例如123,要取出十位数字2,让2变成个位数字即可,而123/10=12,此时2就变成个位数字,再%10即可取出数字2。

原理:要删除一个多位数右边的几位数字,除以一个10的几次方即可。例如12345取出千位数字2,除以1000即可。

取出一个三位数的所有位数字后,即可按照公式判断是否为水仙花数。代码如下:

4561767c3302968a42cbf2ab7e75bfe7.png

数据类型:本题的数据最大也就三位数,所有数据可选int类型。

重难点

本题的重难点是如何取出一个三位数的百位、十位、个位数字。

运行结果

ddb49d9887088c962a8a62a6dfdb858c.png

参考代码 - C++

1505bd38b31f0664088bd425ae678335.png

参考代码下载链接

https://pan.baidu.com/s/1uB1jXca1wLRaf3D5W-u_Sw

提取码:dsbc

END

注:题目来源于网络,转载于《信息学奥赛一本通(C++版)在线评测系统》,点击下方的【阅读原文】即可打开该题的链接。

题解属于本微信公众号【大神编程】原创。

4acc55cd9e9e993e92ce70af6389affa.gif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值