Skip to content

Commit 3a3ff8f

Browse files
committed
add Combination.py
1 parent 317a080 commit 3a3ff8f

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

Math/Combination.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
class Combination:
2+
def __init__(self, N: int, MOD: int) -> None:
3+
self.N = N + 100
4+
self.MOD = MOD
5+
self.fac = [0]*(self.N + 1)
6+
self.fac_inv = [0]*(self.N + 1)
7+
self.fac[0] = 1
8+
self.fac_inv[0] = 1
9+
10+
for i in range(1, self.N + 1):
11+
self.fac[i] = self.fac[i - 1] * i
12+
self.fac[i] %= self.MOD
13+
14+
for i in range(1, self.N + 1):
15+
self.fac_inv[i] = pow(self.fac[i], self.MOD - 2, self.MOD)
16+
17+
def nCr(self, N: int, R: int) -> int:
18+
return self.fac[N]*self.fac_inv[R]*self.fac_inv[N - R] % self.MOD
19+
20+
def nPr(self, N: int, R: int) -> int:
21+
return self.nCr(N, R)*self.fac[R] % self.MOD
22+
23+
24+
def main() -> None:
25+
N = 10**5
26+
mod = 998244353
27+
Com = Combination(N, mod)
28+
29+
30+
if __name__ == "__main__":
31+
main()

0 commit comments

Comments
 (0)