[数论]

 1 ll pow(ll a,ll b,ll mod)
 2 {
 3     ll res=1;
 4    // if(a==0)    return res;
 5     while(b)
 6     {
 7         if(b&1)  res=(res*a)%mod;
 8         a=(a*a)%mod;
 9         b>>=1;
10     }
11     return res;
12 }
13 void init()
14 {
15     inv[1]=1;
16     for(int i=2;i<n;i++)//逆元
17         inv[i]=(mod-mod/i)*1ll*inv[mod%i]%mod;
18     F[0]=Finv[0]=1;
19     for(int i=1;i<n;i++)
20     {
21         F[i]=F[i-1]*i*1ll%mod;//阶乘
22         Finv[i]=Finv[i-1]*1ll*inv[i]%mod;//阶乘
23     }
24 }
25 int comb(int n,int m)//求Cnm
26 {
27     if(m<0||m>n)    return 0;
28     return F[n]*1ll*Finv[n-m]%mod*Finv[m]%mod;
29 }

猜你喜欢

转载自www.cnblogs.com/Kaike/p/12965446.html