In [1]:
N = 10000
MOD = 10 ** 10
In [2]:
comb = [[0] * (N+1) for _ in range(N+1)]
In [3]:
%%time
comb[0][0] = 1
for n in range(1,N+1):
    comb[n][0] = 1
    for k in range(1,N+1):
        comb[n][k] = (comb[n-1][k-1] + comb[n-1][k]) % MOD
Wall time: 31.4 s
In [4]:
[comb[n][:n+1] for n in range(10)]
Out[4]:
[[1],
 [1, 1],
 [1, 2, 1],
 [1, 3, 3, 1],
 [1, 4, 6, 4, 1],
 [1, 5, 10, 10, 5, 1],
 [1, 6, 15, 20, 15, 6, 1],
 [1, 7, 21, 35, 35, 21, 7, 1],
 [1, 8, 28, 56, 70, 56, 28, 8, 1],
 [1, 9, 36, 84, 126, 126, 84, 36, 9, 1]]
In [ ]: