有一百扇门,一开始都是关着的,一个机器人做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.....
我一直想弄明白的是这背后的数学。有什么帮助吗?你知道吗
分解数字-每个系数表示门打开/关闭的“通道”。平方数有奇数个因子(9=1,3[两次],9)。其他一切都有偶数个因素
相关问题 更多 >
编程相关推荐