此題考查的是卡特蘭數,由於卡特蘭數很大,所以考慮大數處理。
卡特蘭數的前幾項為:h(0)=1;h(1)=1;h(2)=2;h(3)=5……
卡特蘭數的遞推公式為:h(n)=h(n-1)*(4*n-2)/(n+1);
非遞推公式為c(2n,n)/(n+1);
此題用遞推公式求解,並用到大數的乘法和大數的乘法處理,本題對卡特蘭數的前100項做了預處理:
ac**如下:
#include//卡特蘭數求法 遞推公式h(n)=h(n-1)*(4*n-2)/(n-1)
using
namespace
std;
#include
#define n 100 //
存乙個卡特蘭數的陣列長度
#define m 10000 //
以4位數存到 陣列中的乙個數中
int a[101][n]=;
void multiply(int a,int n,int b)//
大數乘法
}void divide(int a,int n,int b)//
大數除法
}int
main()
while(scanf("
%d",&n)!=eof&&n!=-1
)
return0;
}
卡特蘭數參考:
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...
卡特蘭數,高精度卡特蘭數
簡單介紹 卡特蘭數是組合數學中常常出現的乙個數列。個人認為不管是遞推公式還是代表的含義都比斐波那契數列難理解一些。遞推公式 應用 1.cn表示長度2n的dyck word的個數。dyck word是乙個有n個x和n個y組成的字串。且全部的字首字串皆滿足x的個數大於等於y的個數。下面為長度為6的dyc...