【蓝桥杯】python153是一个非常特殊的数,它等于它的每位数字的立方和

本文介绍了一道编程题目,寻找类似于153的数,其各位数字的立方和等于自身。提供了两种解决方案,一种通过C语言思路处理每一位数字,另一种通过将数转化为字符串进行比较。题目要求按从小到大顺序输出所有满足条件的三位数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333。编程求所有满足这种条件的三位十进制数。

输出格式

按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。

方法一:

有点偏C语言思维,对数的每一位进行运算。最后限制Number>100为三位数,否则像000这样的特殊数也会被打印出来,会被识别为错误。

for a in range(0,10):
    sum1 = a*a*a
    for b in range(0,10):
        sum2 = b*b*b
        for c in range(0,10):
            sum3 = c*c*c
            Number=a*100+b*10+c
            if Number == sum1+sum2+sum3:
                if Number>100:
                    print(Number)

方法二:

def specialNum():
    for N in range(100, 1000):
        N = str(N)
        if N == str(int(N[0]) ** 3 + int(N[1]) ** 3 + int(N[2]) ** 3):
            print(N)

specialNum()

最后这里N一定要转换为字符串类型来判断是否相等,如果是int类型的比较会返回 ‘int’ object is not subscriptable:

Traceback (most recent call last):
  File "D:/play/lanqiao_practice/huiwen.py", line 55, in <module>
    if N == (int(N[0]) ** 3 + int(N[1]) ** 3 + int(N[2]) ** 3):
TypeError: 'int' object is not subscriptable

同样,这段代码可以不用定义和调用函数,可以顺序的直接写下来。

for N in range(100, 1000):
    N = str(N)
    if N == str(int(N[0]) ** 3 + int(N[1]) ** 3 + int(N[2]) ** 3):
        print(N)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值