組合數學定理收集

2021-07-29 16:09:02 字數 1570 閱讀 2884

唯一分解定理:任意乙個大於1的正整數都能表示成若干個質數的乘積,且表示的方法是唯一的。換句話說,乙個數能被唯一地分解成質因數的乘積。即  n = p1^a1 * p2^a2 * p3^a3 * ...* pn^an  。 其中p1,p2....pn為素數。

**實現:

#include

#include

using namespace std;

const int maxn = 1e5 + 10;

int pre[maxn];

int a[maxn];

int cnt = 0;

void dabiao()

memset(pre,0,sizeof(pre));

for(int i= 2; i < maxn; i++)

if(!pre[i])

a[cnt++]= i;

for(intj = 1; j * i < maxn; ++j)

pre[i*j]= 1;

int main()

dabiao();

intb[maxn];

memset(b,0,sizeof(b));

int n;

scanf("%d",&n);

int k =n;

while(n!= 1)

for(inti = 0; i < cnt; i++)

if(n% a[i] == 0)

b[a[i]]++;

n/= a[i];

break;

return 0;

組合數學:

一、求能除盡n的正整數數目

n   =   p1^a1* p2^a2 * p3^a3 * ...* pn^an  。 其中p1,p2....pn為素數。

數目n    =    (a1 + 1) * (a2 + 1) * (a3 + 1) * …* (an +1) – 1

二、求n!末尾有幾個0

把n!分解成素數的乘積時,2和5的冪是多少?0的個數就等於2和5冪中最小的乙個

三、走矩形方格,從(0,0)點走到(n,m)有多少種走法

n     =     c(n+m,m)

四、計算有n個有標號的頂點的樹的數目,即n個頂點v1,v2……vn,用n-1條邊相連

n    =  n^ (n – 2)

五、在n個不同的元素中取r個進行組合,允許重複或 (r個無區別的球放進n個有區別的盒子裡,每盒放的球可多餘乙個)

n     =    c(n + r – 1, r)

六、組合公式           c(n,m) = c(n-1,m) + c(n-1,m-1)

七、  (1) s1  =   1 + 2 + 3  + 4  + … + n  = (1/2) * n * (n+1)

(2)  s2 =   1 * 2 + 2 * 3 + 3 * 4 + … + n* (n+1)  =  (1/3) * n (n + 1) * (n+2)

(3)  s3 =   1 * 2 * 3  +  2 *3 * 4 + … + n * (n+1) * (n+2)

= (1/4) * n *(n+1)*(n+2)* (n+3)z

stone 組合數學 Lucas定理

傳送門解題思路 第i組的人數必須大於ci,於是我們可以將問題轉化為 n sum m ci 人分到m組中,且保證每一組的人數大於0,然後我們可以使用隔板法求出分的的組數 c m ci 我們可以直接通過基本的組合公式 費馬小定理直接求,也可以通過lucas定理求得 直接求 code includeusi...

組合數學 求組合數

對於求組合數,要根據所給資料範圍來選擇合適的演算法 這道題中所給的資料範圍適合用打表的方法直接暴力求解 先用4e6的複雜度預處理出所有的情況,再用1e4的複雜度完成詢問即可 include using namespace std const int n 2010 const int mod 1e9 ...

數學 組合數學 Lucas定理 卡特蘭數

n n的方格,從左上到右下畫一條線。乙個機械人從左上走到右下,只能向右或向下走。並要求只能在這條線的上面或下面走,不能穿越這條線,有多少種不同的走法?由於方法數量可能很大,只需要輸出mod 10007的結果。卡特蘭數 lucas定理 此題就是乙個模板題 include include include...