大数组合数取模模板(1)
#include <iostream> #include <bits/stdc++.h> #define maxn 1000005 typedef long long ll; using namespace std; const ll mod=1e9+7; ll fac[maxn],inv[maxn]; ll pow_mod(ll a,ll n) { ll ret =1; while(n) { if(n&1) ret=ret*a%mod; a=a*a%mod; n>>=1; } return ret; } void init() { fac[0]=1; for(int i=1;i<maxn;i++) { fac[i]=fac[i-1]*i%mod; } } ll C(ll x, ll y) { return fac[x]*pow_mod(fac[y]*fac[x-y]%mod,mod-2)%mod; }
主函数里面要加一下
init();//因为逆元所以要初始化。