寒假筆記 各種數

2021-09-11 10:25:43 字數 3923 閱讀 4483

卡特蘭數又稱卡塔蘭數,英文名catalan number,是組合數學中乙個常出現在各種計數問題**現的數列。以比利時的數學家歐仁·查理·卡塔蘭 (1814–1894)的名字來命名,其前幾項為(從第零項開始) : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, …

卡特蘭數cn滿足以下遞推關係 :

原題位址

題目描述

眾所周知,在中國古代算籌中,紅為正,黑為負……

給定乙個1*(2n)的矩陣,現讓你自由地放入紅色算籌和黑色算籌,使矩陣平衡[即對於所有的i(1<=i<=2n),使第1~i格中紅色算籌個數大於等於黑色算籌]

問有多少種方案滿足矩陣平衡。

見樣例解釋。

輸入輸出格式

輸入格式:

正整數 n

輸出格式:

方案數t對100取模

輸入輸出樣例

輸入樣例#1:

2輸出樣例#1:

2說明

樣例解釋: 紅 黑 紅 黑

紅 紅 黑 黑

1<=n<=100

**:

#include

#include

#include

#include

#include

using namespace std;

int ka[

110]

;void

tnt()}

intmain()

原題位址

題目描述

最近小 x 又發現了乙個關於圓的有趣的問題:在圓上有2n 個不同的點,小 x 想用 n 條線段把這些點連線起來(每個點只能連一條線段), 使所有的線段都不相交,他想知道這樣的連線方案有多少種?

輸入輸出格式

輸入格式:

有且僅有乙個正整數 n 。 (n≤2999)

輸出格式:

要求的方案數(結果 mod100000007)。

輸入輸出樣例

輸入樣例#1:

24輸出樣例#1:

4057031

**:

那麼假如我們在圓上畫了2n個點,順時針編號為1,2,3,4……,你便會發現,如果乙個奇數點和另乙個奇數點相連,一定會造成將剩下所沒有連線的點分在兩邊的都是奇數個,而後兩邊必定有乙個點沒線連或穿越其中的一條線,那麼就不可能完成了。那麼我們可以把奇數點看成左括號,偶數點看成右括號,然後把圓切開,就變成了乙個括號匹配的方案數問題。為什麼圓可以切開呢?因為a連b和b連a是同一種切法。

在這裡可以用h(n)=c(2n,n)/(n+1),用擴充套件歐幾里德求逆元。

#include

#include

#include

#include

#include

using namespace std;

long

long

int n;

long

long

int qq[

3030];

voidka(

long

long

int x)

return;}

intmain()

printf

("%lld\n"

,qq[n]);

return0;

}

例題

ans=2^n-1

思路見例題

原題位址

題目描述

n個小夥伴(編號從 0到 n-1)圍坐一圈玩遊戲。按照順時針方向給 n個位置編號,從00 到 n-1。最初,第 0號小夥伴在第0號位置,第 1號小夥伴在第 1號位置,……,依此類推。遊戲規則如下:每一輪第 0號位置上的小夥伴順時針走到第 mm 號位置,第 1號位置小夥伴走到第 m+1號位置,……,依此類推,第n − m號位置上的小夥伴走到第 0 號位置,第n∼m+1 號位置上的小夥伴走到第 1 號位置,……,第n−1 號位置上的小夥伴順時針走到第m-1號位置。

現在,一共進行了 10^k輪,請問 x 號小夥伴最後走到了第幾號位置。

輸入輸出格式

輸入格式:

共 1行,包含 4個整數 n,m,k,x每兩個整數之間用乙個空格隔開。

輸出格式:

1個整數,表示 10^k

輪後 x號小夥伴所在的位置編號。

輸入輸出樣例

輸入樣例#1:

10 3 4 5

輸出樣例#1:

5說明

對於 30%的資料,0 < k < 7;

對於 80%的資料,0 < k < 10^7;

對於 100%的資料,1 根據模運算的的分配率可以得到 (x%n+m%n*10k%n)%n只需用快速冪求出10k就可以了。

#include

#include

#include

#include

#include

#include

using namespace std;

int n,m,k,x;

intksm

(int a,

int b)

//快速冪部分

return re;

}int

main()

詳細講解

第一類斯特林數 s1(n,m) 表示的是將 n 個不同元素構成 m 個圓排列的數目。

第二類斯特林數 s2(n,m) 表示的是把 n 個不同元素劃分到 m 個集合的方案數。

原題位址

題目描述

現有r個互不相同的盒子和n個互不相同的球,要將這n個球放入r個盒子中,且不允許有空盒子。問有多少種方法?

例如:有2個不同的盒子(分別編為1號和2號)和3個不同的球(分別編為1、2、3號),則有6種不同的方法:

輸入輸出格式

輸入格式:

兩個整數,n和r,中間用空格分隔。(0≤n, r≤10)

輸出格式:

僅一行,乙個整數(保證在長整型範圍內)。表示n個球放入r個盒子的方法。

輸入輸出樣例

輸入樣例#1:

3 2輸出樣例#1:

6**:

#include

#include

#include

#include

#include

#include

using namespace std;

int qq[15]

[15];

intmain()

簡單來說就是這樣:在(mod p) 意義下( p 是素數),如果 a*a』=1 ,那麼我們就說 a』 是 a 的逆元。當然啦,反過來, a 也是 a』 的逆元。

詳細講解

objective c之各種數值

nsarray和nsdictionary都只能儲存物件,不能儲存任何基本型別的資料,如int,float,struct。因此我們可以用物件來封裝基本的數值。cocoa提供了nsnumber來儲存物件,但不能儲存c裡面的各種資料,所以我們要用一些相應的物件來進行封裝。nsnumber類來包裝基本資料物...

kinect學習筆記(四) 各種資料流

一 kinect開發的乙個流程圖 1 我們可以知道乙個簡單的框架就是幾部分 1 選擇使用的kinect感測器 kinectsensor.kinectsensors 0 2 開啟需要的資料流 kinect.depthstream.enable kinect.colorstream.enable kin...

ACM寒假培訓 各種排序

基本思想 每次遍歷陣列,相鄰的兩個元素比較,公升序時 如果後面小於前面那麼就交換這兩個數,每次迴圈結束時使得乙個最大數冒泡至陣列尾部。最終實現全部排序。時間複雜度 o n 2 空間複雜度 o 1 優化 由於氣泡排序在進行排序時,遍歷一次的同時可以判斷該陣列是否有序,因而在排序時可以判斷如果當前陣列有...