File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change
1
+ #include < bits/stdc++.h>
2
+ using namespace std ;
3
+ const int mod = 1'000'000'007 ;
4
+
5
+ int mpow (int base, int exp) {
6
+ int result = 1 ;
7
+ while (exp > 0 ) {
8
+ if (exp & 1 ) result = ((long long )result * base) % mod;
9
+ base = ((long long )base * base) % mod;
10
+ exp >>= 1 ;
11
+ }
12
+ return result;
13
+ }
14
+
15
+ namespace NcR {
16
+ int fact[200005 ],ifact[200005 ];
17
+ int get (int n, int r) {
18
+ if (n<r||r<0 ||n<0 ) return 0 ;
19
+ return (((fact[n]*1LL *ifact[r])%mod)*1LL *ifact[n-r])%mod;
20
+ }
21
+
22
+ void init () {
23
+ fact[0 ]=1 ;
24
+ for (int i = 1 ; i <= 200000 ; i++) {
25
+ fact[i] = (fact[i-1 ] * 1LL * i)%mod;
26
+ }
27
+
28
+ ifact[200000 ] = mpow (fact[200000 ], mod-2 );
29
+ for (int i=199999 ; i>=0 ; i--) {
30
+ ifact[i] = (ifact[i+1 ] * 1LL * (i+1 ))%mod;
31
+ }
32
+ }
33
+ };
34
+
35
+ int main () {
36
+
37
+ NcR::init ();
38
+ cout << NcR::get (4 , 2 ) << endl;
39
+ return 0 ;
40
+ }
You can’t perform that action at this time.
0 commit comments