求大的组合数模板 利用Lucas定理 Lucas定理:A、B是非负整数,p是质数。A B写成p进制:A=a[n]a[n-1]…a[0],B=b[n]b[n-1]…b[0]。 则组合数C(A,B)与C(a[n],b[n])C(a[n-1],b[n-1])…*C(a[0],b[0]) mod p同余 即:Lucas(n,m,p)=C(n%p,m%p)*Lucas(n/p,m/p,p) 1...
大组合数模板 long long GetInverse(long long a, long long mod) { long long ans = 1, n = mod - 2; a %= mod; while (n) { if (n & 1) { ans = ans * a % mod; } n >>= 1; a = a * a % mod; } return ans % mod; } long long C(long long n, long long m, ...
}base= (base*base)%m; b>>=1; }returnresult; }//组合数取模 C(a,b)%pll composition(ll a, ll b,intp) {if(a a - b) b = a -b;intans =1, ca =1, cb =1;for(ll i =0;i < b; i++) { ca= (ca * (a - i))%p; cb= (cb * (b - i))%p; } ans= (ca * q...
大组合数取模之lucas定理模板,1<=n<=m<=1e9,1<p<=1e6,p必须为素数 输入:C(n,m)%p 调用lucas(n,m,p) 复杂度:min(m,p)*log(m) ***///ax + by = gcd(a,b)//传入固定值a,b.放回 d=gcd(a,b), x , yvoidextendgcd(ll a,ll b,ll &d,ll &x,ll &y) {if(b==0){d=a;x...
大组合数取模之lucas定理模板,1<=n<=m<=1e9,1<p<=1e6,p必须为素数 输入:C(n,m)%p 调用lucas(n,m,p) 复杂度:min(m,p)*log(m) ***///ax + by = gcd(a,b)//传入固定值a,b.放回 d=gcd(a,b), x , yvoidextendgcd(ll a,ll b,ll &d,ll &x,ll &y) {if(b==0){d=a;x...
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 #include <bits/stdc++.h> usingnamespacestd; longlongfact[200200]; longlonginv[200200]; constintmod = 1e9 + 7; longlongqpow(longlongx,longlongn) ...