求n位自幂数#独身数#水仙花数#四叶玫瑰数#五角星数#数的拆分#if

  水仙花数其实只是自幂数的一种特殊情况。自幂数是 n 位数(非负数),且各位数字的 n 次方之和等于该数。例如,4 位数 1634 是自幂数,因为 1634=1**4+6**4+3**4+4**4。
  位数 n 取不同值时,自幂数有不同的叫法。例如,一位自幂数叫独身数、(不存在二位自幂数、)三位自幂数叫水仙花数、四位自幂数叫四叶玫瑰数、五位自幂数叫五角星数等。
  本关任务是根据给定的正整数 n,求所有 n 位自幂数

n = int(input())
########## Begin ##########
i=10**n
i1=10**(n-1)
if n>1: 
    for m in range(i1,i):
        l=[int(xi) for xi in str(m)]
        q=[xi**n for xi in l]
        s=sum(q)
        if m==s:
            print(m)
if n==1:
    for m in range(i):
        l=[int(xi) for xi in str(m)]
        q=[xi**n for xi in l]
        s=sum(q)
        if m==s:
            print(m)
########## End ##########

​

要考虑到当n=1时,i为个位数,即i<10,要取到0,可以考虑把n=1的情况单独列出来。

有没有什么方法,可以把这个范围一次性列出来呢?

n = int(input())
########## Begin ##########
for m in range(10**(n-1)-1,10**n):
    l=[int(xi) for xi in str(m)]
    q=[xi**n for xi in l]
    s=sum(q)
    if m==s:
        print(m) 
########## End ##########

你可能感兴趣的:(笔记,python)