A52355. 所谓“水仙花数”是指一个三位数,这个三位数各个数位上数字的立方和等于该数本身。例如:153是一个"水仙花数",因为153 = 13+53+33。编写程序,计算200到500之间的水仙花数共有多少个。
题目描述
所谓“水仙花数”是指一个三位数,这个三位数各个数位上数字的立方和等于该数本身。例如:153是一个"水仙花数",因为153 = 13+53+33。编写程序,计算200到500之间的水仙花数共有多少个。
参考答案
def count(a, b):
result = []
for i in range(a, b+1):
x, y, z = str(i)[0], str(i)[1], str(i)[2]
if i == int(x)**3+int(y)**3+int(z)**3:
result.append(i)
return result
print(len(count(200, 500)))答案解析
其他解题方法:
#coding:utf-8
#5**3 B表示5的3次方
#整除后取余数 1001%100
# 方法一:
for bai in range(1,10): #百位
for shi in range(0,10): #十位
for ge in range(0,10): #个位
i=bai*100+shi*10+ge
if i==bai**3+shi**3+ge**3:
print(i)
#方法二:将数字先转化为字符串,利用字符串索引找到百、十、个位的数字值
for i in range(100,1000):
s=str(i) #将数字转化为字符串
d=int(s[0]) #百位
e=int(s[1]) #十位
f=int(s[2]) #个位
if i==d**3+e**3+f**3:
print(i)
#方法三:
for i in range(100,1000):
#// 使用取模,分别取出百位数、10位数、个位数
#/// k = i // 10 % 10, 需要注意运算符号和运算顺序
a=i // 100 #整除获得百位数
b=i //10 % 10 # 或者b = (i % 100) // 10
c=i % 10 #个位数
if i == a ** 3 + b ** 3 + c ** 3: