2016-08-17 1 views
0

すべてのパスが始まり、1パスごとに次の始動トークンによってインクリメントされるように、ロボットは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を得るのですか検査するには、それは完全な方形をしているすべてのドア指数はopen.Thusているようだ、自明ですオープンドアは

1,4,9..... 

私が理解しようとしてきたことは、これの背後にある数学です。それを助けてくれる?

+2

これはプログラミング関連の仕組みがわかりません。はい、そこにコードがありますが、実際の問題は純粋に数学的なものです。 – SiHa

答えて

3

数字を分解する - 各因子は、ドアが開閉する「通過」を示します。正方形の数には奇数の要素があります(9 = 1,3 [2]、9)。他のすべてには、偶数の要因があります。

+0

確かに理にかなっているので、すべての要素がその特定のドアを覆ったスイープを表しています。 –