天天看点

线性递推阶乘的逆元

由于逆元是完全积性函数即

f(m*n)=f(m)*f(n)

于是

f(i+1)=1'*2'*........*i'*(i+1)'

左右两边同时乘上(i+1)

左边得到f(i+1)*(i+1)

右边得到1'*2'*........*i'=f(i)

于是f(i)=f(i+1)*(i+1)

求1!到maxn!的逆元

inv[maxn]=mod_pow(fac[maxn],mod-2);

for(ll i=maxn-1;i>=0;i--)

inv[i]=(inv[i+1]*(i+1))%mod;