![db3e4c4ffd76a9e364949a62719eed27.png](https://i-blog.csdnimg.cn/blog_migrate/a55a1895894fabd9dc35e41bc11ea202.png)
本题来源于粉丝的求助。
关于粉丝求助的问题,我们会按照先后顺序来解答,并从公众号后台回复答案和解析。
![930d53bc87d2c6ded63a3a276e6fd75e.png](https://i-blog.csdnimg.cn/blog_migrate/388cfc576238ff94bc54a4f8ef1b5071.png)
![0c1c974334c828f3467fab700c2cb3ad.png](https://i-blog.csdnimg.cn/blog_migrate/0c2f0836040d4e0afab557c87c29cd6b.png)
【题目描述】
打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153 = 1³+5³+3³。
【输入】
无
【输出】
一行一个水仙花水。
【输入样例】
无
【输出样例】
无
说明
主要考查水仙花数的相关知识。
思路分析
水仙花数是一个三位数,一个水仙花数=百位数字的立方+十位数字的立方+个位数字的立方。
可以这么思考,从所有的三位数中,逐个判断是否为水仙花数,如果是则输出,否则换下一个三位数。
先循环遍历所有的三位数,代码如下:
变量i代表当前的三位数。接着对变量i进行拆分,即分别取出变量i的百位、十位、个位数字。代码如下:
此时,变量a是百位数字,变量b是十位数字,变量c是个位数字。
关于如何取出一个多位数的每一位数字,详细教程可参考下面文章:
【信奥】如何深刻理解除法和取模运算(基础篇)
要取出个位数字,只要i%10即可。
要取出十位以上的数字,可以这么思考:把要取出的某位数字变成个位数字,那么%10就可以取出。例如123,要取出十位数字2,让2变成个位数字即可,而123/10=12,此时2就变成个位数字,再%10即可取出数字2。
原理:要删除一个多位数右边的几位数字,除以一个10的几次方即可。例如12345取出千位数字2,除以1000即可。
取出一个三位数的所有位数字后,即可按照公式判断是否为水仙花数。代码如下:
数据类型:本题的数据最大也就三位数,所有数据可选int类型。
重难点
本题的重难点是如何取出一个三位数的百位、十位、个位数字。
运行结果
参考代码 - C++
参考代码下载链接
https://pan.baidu.com/s/1uB1jXca1wLRaf3D5W-u_Sw
提取码:dsbc
END
注:题目来源于网络,转载于《信息学奥赛一本通(C++版)在线评测系统》,点击下方的【阅读原文】即可打开该题的链接。
题解属于本微信公众号【大神编程】原创。