知識點 組合數

2022-07-21 05:15:08 字數 661 閱讀 2256

1.逆元求解組合數

目標:求出c(n,m)%p 這裡p是乙個素數!

方法:費馬小定理求逆元

因為膜的性質並不對除法適用,比如(a/b)%c;

但是,當我們知道了b%c的逆元d時,問題可以轉化為:(a*d)%c=((a%c)*(b%c))%c;

考慮費馬小定理:

a^p-1=1(mod p)

顯然有:

a*a^p-2=1(mod p)

那麼a^p-2就是a膜p意義下的逆元

利用快速冪即可求出!

然後我們需要預處理出m!,(n-m)!,分別對他們求出逆元,再與n!乘並取模即可!

2.組合數常用公式:

c(n,m)=c(n,n-m);

c(n,m)=c(n-1,m-1)+c(n-1,m);

這樣,所有的組合數都可以實現線性遞推!

還需要注意預處理啊!

c(0,i)=c(1,1)=1;

c(0,0)=0;

#include

using namespace std;

const int n=2001,m=2001;

int c[n][m],ans[n][m],n,m,t,k;

inline int min(int x,int y)

return 0;

}

組合數學部分知識點

組合數學 加法乘法原理 分類,分步 錯排公式 d n n 1 d n 2 d n 1 第一步,把第n個元素放在乙個位置,比如位置k,一共有n 1種方法 第二步,放編號為k的元素,這時有兩種情況 把它放到位置n,那麼,對於剩下的n 1個元素,由於第k個元素放到了位置n,剩下n 2個元素就有d n 2 ...

知識點總結 組合,繼承,多型

一 組合 將乙個類的物件作為另乙個類的成員,被稱作組合或包含 1.將嵌入的物件作為新類的公有成員 class eye class nose class mouth class ear class head int main 2.將嵌入物件作為新類的私有成員 class engine void sta...

從字首和到組合數 2018多校題目知識點析取

第i個位置上的數字變成了1,求整個陣列求k次字首和之後,j位置上的字首和 我們先把可能發生了什麼列出來 假設我們在位置i新增了w,現在要查詢j位置,現在一次字首和操作都沒有進行,矩陣的第一列代表i位置,最後一列代表j位置 w00 0 w00 0 一開始肯定什麼都沒有發生,我們現在直接讓他加3次ww ...