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 ...