hdu 2848 Grids(卡特蘭數)

2021-08-22 11:47:56 字數 1251 閱讀 4822

problem description

度度熊最近很喜歡玩遊戲。這一天他在紙上畫了乙個2行n列的長方形格仔。他想把1到2n這些數依次放進去,但是為了使格仔看起來優美,他想找到使每行每列都遞增的方案。不過畫了很久,他發現方案數實在是太多了。度度熊想知道,有多少種放數字的方法能滿足上面的條件?

input

第一行為資料組數t(1<=t<=100000)。

然後t行,每行為乙個數n(1<=n<=1000000)表示長方形的大小。

output

對於每組資料,輸出符合題意的方案數。由於數字可能非常大,你只需要把最後的結果對1000000007取模即可。

sample input

2 1 3

sample output

case #1: 1 case #2: 5 hint

對於第二組樣例,共5種方案,具體方案為:

題目大意:中文題,容易理解,

之前見過乙個題,小朋友排隊,說是n個小朋友1~n,排成兩排,要求和題目一樣,卡特蘭數完成的,因此我只個直接就用卡特蘭數了。

注意一點就是卡特蘭數取模的時候要用費馬小定理轉換一下,否則會爆精度,使用費馬小定理過程如下:

直接從除法變成了乘法,用快速冪進行b的mod-2次方 的運算,這樣就能保證精度了

ac:

#include#include#include#include//#include#include#include#include#include#include#include#includeusing namespace std;  

#define ll long long

#define inf 0x3f3f3f3f

#define mod 1000000007

//#define max(a,b) (a)>(b)?(a):(b)

//#define min(a,b) (a)

#define clean(a,b) memset(a,b,sizeof(a))// 水印

//std::ios::sync_with_stdio(false);

ll f[1000100];

ll quick(ll x,ll n)

return res;

}void intt()

}int main()

}

HDU 4828 Grids(卡特蘭數)

題意 乙個2行n列的長方形格仔。把1到2n這些數依次放進去,求每行每列都遞增的方案數 對1e9 7取模 n 1e6 思路 1到2n乙個個放,有兩種情況,放第一行或者放第二行,可以發現要滿足每行每列都遞增的要求是放的過程中第一行的數大於等於第二行的數。這很類似於台階問 題 在乙個n n 的格仔中,我們...

hdu4828卡特蘭數

題目大意 有2行n列的長方形格仔,把1到2n這些數放進格仔裡面,使每行每列都遞增。也就是相當於,n個0和n個1排序,要求每個點的前面都要求0的個數大於等於1的個數,問排列的順序的種數。可以轉換為卡特蘭數,有遞推式 cn 1 4n 2 n 2 cn 具體卡特蘭數的資料 要用到逆元 include in...

卡特蘭數(HDU 1023)

卡特蘭數又稱卡塔蘭數,是組合數學中乙個常出現在各種計數問題中出現的數列。由以比利時的數學家歐仁 查理 卡塔蘭 1814 1894 命名。卡特蘭數 前幾項為 oeis中的數列a000108 1,1,2,5,14,42,132,429,1430,4862,16796,58786,208012,74290...