回答編集履歴
1
修正
test
CHANGED
@@ -1,25 +1,35 @@
|
|
1
1
|
上の段から順に、そのまま算出すればよいです。
|
2
2
|
|
3
|
-
`Python`でのコード例です。このままだと100段くらいだとかなり時間かかりますが。
|
3
|
+
`Python`でのコード例です。~~このままだと100段くらいだとかなり時間かかりますが。~~
|
4
|
+
|
5
|
+
お手軽に`lru_cache`を使ってメモ化してみました。100段でも瞬時に求まります。
|
4
6
|
|
5
7
|
```Python
|
6
8
|
|
9
|
+
from functools import lru_cache
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
@lru_cache(maxsize=1000) # サイズは適当に
|
14
|
+
|
7
15
|
def val( row, col):
|
8
16
|
|
9
|
-
if col <= 0 or col >= row:
|
17
|
+
if col <= 0 or col >= row:
|
10
18
|
|
11
19
|
return 1
|
12
20
|
|
13
|
-
return val( row-1, col-1) + val(row-1,col)
|
21
|
+
return val( row-1, col-1) + val(row-1,col)
|
14
22
|
|
15
23
|
|
16
24
|
|
17
|
-
|
25
|
+
with open('ret.txt','w') as f: # 見づらいのでファイルに出力
|
18
26
|
|
19
|
-
for
|
27
|
+
for row in range(100):
|
20
28
|
|
21
|
-
|
29
|
+
for col in range(row+1):
|
22
30
|
|
31
|
+
f.write('{:40d}'.format( val( row, col))) # 40桁で足りる
|
32
|
+
|
23
|
-
|
33
|
+
f.write('\n')
|
24
34
|
|
25
35
|
```
|