如何解决 Python 中的多位数字操作问题

How do I solve a multi-digit number manipulation problem in Python

我需要仅使用 python 代码来解决以下问题:有两个 3 位数的 属性 可以被 11 整除,而 /11 等于.

的数字的平方

找到 .

的两个值

我知道我需要为第一个数字插入 1-9,为第二个和第三个数字插入 0-9,直到我得到平方和等于 n/11 的数字组合,以及 n/11 必须是没有余数的整数。我知道我需要使用循环,但我真的很困惑如何检查每个可能的三位数以查看它是否满足条件。

你可以试试这个:

for num in range(110,1000,11) :
    digits = map( int, str(num) )
    if sum([i*i for i in digits]) * 11 == num :
        print num

回复评论:

range(110, 1000, 11)遍历11的倍数的三位数字,第一个是110 = (11 * 10),第二个是121 = (11 * 11)等等。

digits = map( int, str(num) ) 使用 str(num) 将数字转换为字符串,然后获取每个数字并使用 int 将其转换回整数。如果您有 num = 534,这将导致列表 [5, 3, 4]。您可能会通过使用 [int(i) for i in str(num)] 获得类似的结果,但恕我直言,这更长且不够优雅。