Skip to content

Commit 84d18bf

Browse files
authored
Create nCr.cpp
1 parent de7d504 commit 84d18bf

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

Templates/nCr.cpp

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
ll fact[500005];
2+
3+
ll sum(ll x,ll y){
4+
return (x%mod + y%mod)%mod;
5+
}
6+
7+
ll mul(ll x,ll y){
8+
return ((x%mod)*(y%mod))%mod;
9+
}
10+
11+
12+
ll modInverse(ll a, ll m)
13+
{
14+
ll m0 = m;
15+
ll y = 0, x = 1;
16+
17+
if (m == 1)
18+
return 0;
19+
20+
while (a > 1) {
21+
ll q = a / m;
22+
ll t = m;
23+
m = a % m, a = t;
24+
t = y;
25+
y = (x - mul(q, y)+mod)%mod;
26+
x = t;
27+
}
28+
29+
if (x < 0)
30+
x = sum(x,m0);
31+
32+
return x;
33+
}
34+
35+
36+
ll ncr(ll n,ll r){
37+
ll ans=(fact[n]);
38+
ans=mul(ans,modInverse(fact[n-r],mod));
39+
ans=mul(ans,modInverse(fact[r],mod));
40+
return ans;
41+
}

0 commit comments

Comments
 (0)