筆記 求解C n, m 情況

2021-08-21 17:58:24 字數 1343 閱讀 6515

一、求解c(n, m)

公式一:

公式二:

公式二可以這麼理解,從n個物品中取m個有2種情況:(1)不取第n個物品,於是從前n-1個中取m個; (2)取第n個物品,於是從前n-1個中取m-1; 所以答案是這兩種情況的和

二、求解c(n, m)%p,p為大質數

當n,m,p都很大的時候,用公式二肯定不行了,費時間又費記憶體,這時候要用公式一,問題是取模時怎樣可以把除法轉化為乘法?

費馬小定理:若p是質數,且a,p互質,那麼 a的(p-1)次方除以p的餘數恆等於1, 即a^(p-1)  ≡ 1 (mod p),所以a^(p-2) ≡ 1/a  (mod p)

公式三:

這裡求階乘的時候要一邊乘一邊取模,求p-2次方的時候要要快速冪

三、求解c(n, m)%p,p為小質數

lucas定理:n,m是非負整數,p是質數,將n,m寫成p進製的形式,即:n=(a[k], a[k-1]...., a[0])p,m=(b[k], b[k-1]..., b[0])p,則

公式四:

公式五:

在對上面公式證明之前,我們先證明一下下面這個公式

公式六:

證明公式六:

證明公式五:

四、範德蒙恒等式

公式七:

證明:1.

2.可以這麼理解:從n+m個球中取k個球,相當於將球分為兩部分,分別有n個球和m個球;結果相當於從n個球中取i個的球情況下,從m個球中取k-i個球,i的範圍是[0,k]。

DFS求解出棧順序,輸出所有情況

給定乙個入棧順序,輸出所有出棧順序及其方法數。對於乙個一入棧的的數,他有兩種選擇,出棧進而輸出,或者不出棧,等待新的元素進棧,不論哪一種操作,操作完成之後都會形成乙個新的序列,這跟進行出棧,入棧操作之前一樣,因此可以用遞迴的方法來模擬實現。輸入的引數有3個,輸入佇列,中間用來儲存的棧,用於輸出的佇列...

最大熵學習筆記(四)模型求解

生活中我們經常聽到人們說 不要把雞蛋放到乙個籃子裡 這樣可以降低風險。深究一下,這是為什麼呢?其實,這裡邊包含了所謂的最大熵原理 the maximum entropy principle 本文為一則讀書筆記,將對最大熵原理以及由此匯出的最大熵模型進行介紹,重點給出其中所涉及數學公式的理解和詳細推導...

筆記 隨機梯度下降引數求解實現

隨機梯度下降 描述 每次選取乙個樣本參與梯度計算 場景 一元線性回歸 import numpy as np np.random.seed 1 x 2 np.random.rand 100,1 y 4 3 np.random.randn 100,1 x np.c np.ones 100,1 x m 1...