ACM數論之旅8 組合數

2021-08-19 22:00:53 字數 1126 閱讀 7742

**:

組合數並不陌生(´・ω・`)

我們都學過組合數

會求組合數嗎

一般我們用楊輝三角性質

楊輝三角上的每乙個數字都等於它的左上方和右上方的和(除了邊界)

第n行,第m個就是,就是c(n, m) (從0開始)

電腦上我們就開乙個陣列儲存,像這樣

用遞推求

#includeconst int n = 2000 + 5;

const int mod = (int)1e9 + 7;

int comb[n][n];//comb[n][m]就是c(n,m)

void init()

}}int main()

(ps:大部分題目都要求求餘,而且大部分都是對1e9+7這個數求餘)

這種方法的複雜度是o(n^2),有沒有o(n)的做法,當然有(´・ω・`)

因為大部分題都有求餘,所以我們大可利用逆元的原理(沒求餘的題目,其實你也可以把mod自己開的大一點,這樣一樣可以用逆元做)

根據這個公式

我們需要求階乘和逆元階乘

我們就用1e9+7來求餘吧

**如下:

#includeconst int n = 200000 + 5;

const int mod = (int)1e9 + 7;

int f[n], finv[n], inv[n];//f是階乘,finv是逆元的階乘

void init()

f[0] = finv[0] = 1;

for(int i = 1; i < n; i ++)

}int comb(int n, int m)

int main()

組合**好,要懂得善加利用(。-`ω´-)

Noip2016 組合數(數論)

組合數表示的是從n個物品中選出m個物品的方案數。舉個例子,從 1,2,3 三個物品中選擇兩個物品可以有 1,2 1,3 2,3 這三種選擇方法。根據組合數的定 義,我們可以給出計算組合數的一般公式 其中n 1 2 n 小蔥想知道如果給定n,m和k,對於所有的0 i n,0 j min i,m 有多少...

方程(1)(數論 組合數)

description 求關於x1,x2,xn 的方程 x1 x2 xn k 的非負整數解的個數。input 僅一行,包含 個正整數n,k。output 乙個整數,表示方程不同解的個數,這個數可能很大,你只需輸出mod 20080814的結果。分析 這其實是乙個組合數的模型 有n種元素,每種元素可不...

組合數取模 數論

本人水平有限,題解不到為處,請多多諒解 本蒟蒻謝謝大家 題目 time limit 1 sec memory limit 128 mb submit 113 solved 39 submit status web board 給出n,m,p,求c n,m mod p 1 m n 10 6,1 p 1...