BotByte

nCr mod M.cpp

Nov 30th, 2017
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.57 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define MOD 1000000007
  6. #define MAX 1200006
  7. #define ll long long
  8. ll fact[MAX], Inv[MAX];
  9.  
  10. ll bigMod(ll n,ll r){
  11.     if(r==0) return 1LL;
  12.     ll ret=bigMod(n,r/2);
  13.     ret=(ret*ret)%MOD;
  14.     if(r%2==1) ret=(ret*n)%MOD;
  15.     return ret;
  16. }
  17.  
  18. void pre()
  19. {
  20.     fact[0] = Inv[0] = 1;
  21.     for(int i=1; i<MAX; i++){
  22.         fact[i] = (fact[i-1]*i)%MOD;
  23.         Inv[i] = bigMod(fact[i], MOD-2);
  24.     }
  25. }
  26.  
  27. ll nCr(ll n, ll r)
  28. {
  29.     return (fact[n] * ((Inv[r]*Inv[n-r])%MOD)) %MOD;
  30. }
  31.  
  32. int main()
  33. {
  34.     pre();
  35. }
Advertisement
Add Comment
Please, Sign In to add comment