3位水仙花数计算pythonoj_陈小陌博客

水仙花又称为自恋数,传说纳克索斯曾在湖边欣赏自己的美丽,不慎跌入湖中溺水而亡,在他跌入湖中的地方,长出了一种花,被称为纳克索斯花,也成为水仙花。而由于湖的终日哭泣,湖水也变成苦涩的泪水。一日,山林女神来到了湖边,就安慰湖说:我很能理解你的心情,我终日奔走在山林之中,就是为了一睹纳克索斯的美丽,而只有你,能如此近距离欣赏他的美丽。听到这里,湖楞了一下,问道:纳克索斯很美吗?林中女神道:你不知道纳克索斯是美丽的吗?那你为什么而哭泣。湖顿了顿:我哭泣不是因为纳克索斯是美丽的,而是每当纳克索斯俯身看我的时候,我从他的双眸深处,看到了我自己的美丽。

咳咳,水仙花定义是这个数等于他每一位上数的幂次之和。唔,又点绕,举个例子:

比如一个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

打赏ailipay.jpg支付宝打赏

weixin.jpg微信打赏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值