测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A52355. 所谓“水仙花数”是指一个三位数,这个三位数各个数位上数字的立方和等于该数本身。例如:153是一个"水仙花数",因为153 = 13+53+33。编写程序,计算200到500之间的水仙花数共有多少个。

填空题 较难

题目描述

所谓“水仙花数”是指一个三位数,这个三位数各个数位上数字的立方和等于该数本身。例如:153是一个"水仙花数",因为153 = 13+53+33。编写程序,计算200到500之间的水仙花数共有多少个。

参考答案

def count(a, b): result = [] for i in range(a, b+1): x, y, z = str(i)[0], str(i)[1], str(i)[2] if i == int(x)**3+int(y)**3+int(z)**3: result.append(i) return result print(len(count(200, 500)))

答案解析

其他解题方法:


#coding:utf-8

#5**3  B表示5的3次方

#整除后取余数 1001%100

 

# 方法一:

for bai in range(1,10):        #百位

    for shi in range(0,10):    #十位

        for ge in range(0,10): #个位

            i=bai*100+shi*10+ge

            if i==bai**3+shi**3+ge**3:

                print(i)

 

#方法二:将数字先转化为字符串,利用字符串索引找到百、十、个位的数字值

for i in range(100,1000):

    s=str(i)   #将数字转化为字符串

    d=int(s[0])  #百位

    e=int(s[1])  #十位

    f=int(s[2])  #个位

    if i==d**3+e**3+f**3:

        print(i)

 

#方法三:

for i in range(100,1000):

#// 使用取模,分别取出百位数、10位数、个位数

#/// k = i // 10 % 10, 需要注意运算符号和运算顺序

    a=i // 100  #整除获得百位数

    b=i //10 % 10     # 或者b = (i % 100) // 10

    c=i % 10    #个位数

    if i == a ** 3 + b ** 3 + c ** 3:


上一题 下一题