2301_79207033 2023-07-23 13:01 采纳率: 0%
浏览 26

输入一个正整数n,求100到n之间水仙花数的个数

img


怎么改都不对,是不是要建一个列表?然后用列表统计长度,但这个方法好像不太行,有没有推荐别的方法?

  • 写回答

3条回答 默认 最新

  • threenewbee 2023-07-23 13:06
    关注

    不用列表,因为水仙花数特指3位

    n = input() 
    n = int(n)
    sum = 0
    for i in range(100, n): 
        a = i // 100
        b = i // 10 % 10
        c = i % 10
        if a * a * a + b * b * b + c * c * c == i:
            # print(i)
            sum += 1
    print(sum)
    

    或者,如果你希望更多位

    n = input() 
    n = int(n)
    sum = 0
    for i in range(100, n): 
        j = i
        k = 0
        while j > 0:
            k += (j % 10) ** len(str(i))
            j //= 10
        if k == i:
            sum += 1
    print(sum)
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 7月23日