描述
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。 现在要求输出所有在m和n范围内的水仙花数。
输入描述:
输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。
输出描述:
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开;如果给定的范围内不存在水仙花数,则输出no;每个测试实例的输出占一行。
获得一行中的字符串将它们转换为int类型,再将每个数字的个位十位百位切出来,分别使用pow函数加在一起来对比原来的数字。
while True:
try:
m, n = map(int, input().split()) # 将行内数字转换成整形
lis = []
for num in range(m, n + 1):
one = num // 100 # 个位
two = num // 10 % 10 # 十位
three = num % 10 # 百位
if num == pow(one, 3) + pow(two, 3) + pow(three, 3):
lis.append(str(num)) # 这里转换成字符串是为了后面join
if len(lis) == 0:
print("no")
else:
print(" ".join(lis))
except:
break
可以将取位数那里的整除数运算换成字符串切片,将这一段改成
for num in range(m, n + 1):
num_str = str(num)
one = int(num_str[-1]) # 个位
two = int(num_str[-2]) # 十位
three = int(num_str[-3]) # 百位
浙公网安备 33010602011771号