问题1描述:
- "水仙花数"是指一个三位整数,其各位数字的3次方和等于该数本身。
- 例如:ABC是一个"3位水仙花数",则:A的3次方+B的3次方+C的3次方 = ABC。
- 请按照从小到大的顺序输出所有的3位水仙花数,请用"逗号"分隔输出结果。
思路分析:
- 根据水仙花数的定义,其为一个三位数,确定遍历的范围是[100,1000)
- 根据”其各位数字的3次方和等于该数本身。”设计算法,首先要得到各位数字A、B、C;其次:A的3次方+B的3次方+C的3次方 = ABC
- 由于要求按照从小到大的顺序输出所有的3位水仙花数,用逗号隔开输出结果。如果我们直接输出用print(i,end=",")的形式的话,那么不可避免会在最后输出逗号。为了避免这个问题,我们用一个字符串来存储水仙花数s += “{},”.format(i),最后输出s[:-1],不输出最后一位即可
- 要得到各位数字A、B、C在这里有两种方法:
法1:直接用数学的相关法则得到,a=i//100,b=i%100//10,c=i%10
法2:不用数学相关法则,直接提取。可把三位整数先转为字符串型,再用索引得到每一位,最后把每一位都转化为整型。 - 根据以上两种方法,得到两种代码,如下
法1代码:
s = ""
for i in range(100,1000):
a = i // 100
b = i % 100 // 10
c = i % 10
d = pow