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