程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

Python水仙花数(Python水仙花数pta)

hfteth 2025-04-07 14:33:36 技术文章 6 ℃
def is_narcissistic(number, n):
    return sum(int(digit) ** n for digit in str(number)) == number

def find_narcissistic_numbers(n):
    start = 10 ** (n - 1)
    end = 10 ** n
    narcissistic_numbers = []
    for number in range(start, end):
        if is_narcissistic(number, n):
            narcissistic_numbers.append(number)
    return narcissistic_numbers

def get_nth_narcissistic_number(n, m):
    if n < 3 or n> 7:
        return -1
    if m < 0:
        return -1
    
    narcissistic_numbers = find_narcissistic_numbers(n)
    count = len(narcissistic_numbers)
    
    if count == 0:
        return -1
    
    if m < count:
        return narcissistic_numbers[m]
    else:
        return narcissistic_numbers[-1] * m

# 自定义输入
n = int(input("请输入位数n(3到7之间):"))
m = int(input("请输入序号m:"))

result = get_nth_narcissistic_number(n, m)
print("结果为:", result)

解决步骤

  1. 输入验证

检查输入的n是否在3到7之间。

检查m是否为正整数。

  1. 生成水仙花数

根据n的值,生成所有n位的水仙花数。

水仙花数的定义是:一个n位的正整数,其各位数字的n次方和等于该数本身。

  1. 返回结果

如果m小于水仙花数的个数,返回第m个水仙花数。

如果m大于水仙花数的个数,返回最后一个水仙花数和m的乘积。

如果输入不合法,返回-1。


Tags:

最近发表
标签列表