增量门通谜语 - 只有方形位置打开

时间:2016-08-17 14:07:38

标签: python math

有一百个门,全部关闭以开始,一个机器人进行100次通过,这样在每次通过时它会增加下一个起始标记。因此,

1, 2, 3,.....
2, 4, 6, 8,....
3, 6, 9, 11,....
4, 8, 12, 16,....
.......
100

每次访问门时,它都会从当前状态切换,如果它打开则关闭,如果关闭则打开。 100次通过后,找到打开的门的数量。

这个问题很简单,这是我的解决方案,

def door_traversal():
    arr = []
    arr = [0 for i in range(101)]
    for i in range(1, 101, 1):
        for j in range(i, 101, i):
            arr[j] = not arr[j]

    count = 0
    for i in range(1, 101, 1):
        if arr[i] == 1:
            count += 1
    return count

答案是10,在检查如何获得这个数字10时,似乎所有正方形的门指数都打开了。那么打开的门是

1,4,9.....

我一直试图理解的是背后的数学,这个。对此有何帮助?

1 个答案:

答案 0 :(得分:3)

对数字进行分解 - 每个因子表示门打开/关闭的“通过”。平方数有奇数个因子(9 = 1,3 [两次],9)。其他一切都有很多因素