如何解决 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)]
获得类似的结果,但恕我直言,这更长且不够优雅。
我需要仅使用 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)]
获得类似的结果,但恕我直言,这更长且不够优雅。