階乘逆元線推 鞏固 優化

2022-07-13 19:03:08 字數 499 閱讀 4420

有時候在計算組合數的時候會經常用n!的逆元,如果n<=1e5左右的話,其實可以o(n)預處理出來的,當然一般mod是1e9+7

**也不難寫:

fac[0] = 1;

for (int i = 1; i <= n; i++) fac[i] = (fac[i-1] * i) % mod;

inv[n] = pow_mod(fac[n], mod-2);//fac[n]^

for (int i = n - 1; i >= 0; i--) inv[i] = inv[i+1] * (i + 1) % mod;

然後在使用的時候是直接return fac[n]*inv[m]%mod*inv[n-m]%mod;//計算c(n, m),注意不要溢位

如果mod比n要小的話要注意了,因為如果inv[i+1] = 0的話會導致推到前面都是0了,另外雖然沒有深究過,但是覺得在這種情況下這個效果不是非常好,

所以這種預處理就暫時只用在mod是1e9+7 或 1e9+9上。(就本人)

逆元在階乘上的運用

what s 逆元 原題 xiaoxin juju needs help 題意 給一字串,問用這個字串裡面的字元可以拼成多少個不同的回文串 解析 把回文串分成左右兩邊,即字母x出現次數除2,求排列c 假設左半邊有x個字母a,y個字母b,z個字母c,c x y z x y z 普通的做法有個bug,x...

ACdream1139 Sum 推公式 逆元求解

題意 給定乙個由0 9組成的矩陣,我們求行相鄰的組成的數與列相鄰的組成的數的和。eg 第一行組成的數有 1,2,3,12,23,123 第一列組成的數有 1,4,7,12,47,147.暴力列舉所有的數肯定是不可取的,我們試著總結。我們發現a x y 在行裡出現的數對以後和的貢獻為 x a x y ...