水仙花又称为自恋数,传说纳克索斯曾在湖边欣赏自己的美丽,不慎跌入湖中溺水而亡,在他跌入湖中的地方,长出了一种花,被称为纳克索斯花,也成为水仙花。而由于湖的终日哭泣,湖水也变成苦涩的泪水。一日,山林女神来到了湖边,就安慰湖说:我很能理解你的心情,我终日奔走在山林之中,就是为了一睹纳克索斯的美丽,而只有你,能如此近距离欣赏他的美丽。听到这里,湖楞了一下,问道:纳克索斯很美吗?林中女神道:你不知道纳克索斯是美丽的吗?那你为什么而哭泣。湖顿了顿:我哭泣不是因为纳克索斯是美丽的,而是每当纳克索斯俯身看我的时候,我从他的双眸深处,看到了我自己的美丽。
咳咳,水仙花定义是这个数等于他每一位上数的幂次之和。唔,又点绕,举个例子:
比如一个3位的十进制整数153就是一个水仙花数。因为 153 = 13+ 53+ 33
而一个4位的十进制数1634也是一个水仙花数,
因为 1634 = 14 + 64 + 34 + 44。
给出n,找到所有的n位十进制水仙花数。
样例
比如 n = 1, 所有水仙花数为:[0,1,2,3,4,5,6,7,8,9]。而对于 n = 2, 则没有2位的水仙花数,返回 []。
注意事项
你可以认为n小于8。(这个主要是,如果数太大,就会栈溢出,同时时间也会超时)
代码:class Solution:
"""
@param n: The number of digits
@return: All narcissistic numbers with n digits
"""
def getNarcissisticNumbers(self, n):
# write your code here
num_list = []
if n == 1:
for i in range(10):
num_list.append(i)
else:
for x in range(10**(n-1),10**n):
str_x = str(x)
sum = 0
i = n
while i>0:
sum += int(str_x[i-1])**n
i = i-1
if sum == x:
num_list.append(x)
return num_list
打赏支付宝打赏
微信打赏