python竞赛课上老师讲了一道关于水仙花数的题目小明觉得很简单于是便想出了一道水仙花数升级版的题目:自幂数是指一个x位数它的每个位上的数字的x次幂之和等于它本身。如153 = 1^3 + 5^3 + 3^3 153就是一个自幂数。现在小明想求m n 以内的自幂数但是他不会做只好找你帮忙……Input一行两个数mn表示要求闭区间mn之间的自幂数。Output如果有自幂数则由小到大输出这些自幂数
你可以使用以下代码来解决这个问题:
def narcissistic_number(m, n):
result = []
for num in range(m, n+1):
digits = str(num)
x = len(digits)
sum_of_powers = sum(int(digit)**x for digit in digits)
if sum_of_powers == num:
result.append(num)
return result
m, n = map(int, input().split())
numbers = narcissistic_number(m, n)
if len(numbers) > 0:
for num in numbers:
print(num)
else:
print("No solution!")
这个函数narcissistic_number接受两个参数m和n,并返回[m, n]之间的自幂数列表。它使用一个循环来遍历[m, n]范围内的所有数字,然后计算每个数字的每个位上的数字的x次幂之和。如果这个和等于数字本身,则将该数字添加到结果列表中。
然后,我们从输入中获取m和n的值,并调用narcissistic_number函数来获取自幂数列表。如果列表不为空,则逐行打印自幂数。如果列表为空,则打印"No solution!"
原文地址: https://www.cveoy.top/t/topic/hJsK 著作权归作者所有。请勿转载和采集!