hdu 1131
来源:互联网 发布:演员软件 编辑:程序博客网 时间:2024/06/06 12:48
大整数#include<stdio.h>int a[200][1000]={0};int main(){int i,j,k,len,t,n; a[1][0]=1;len=1; for(i=2;i<=100;i++) { for(j=0;j<len;j++) a[i][j]=a[i-1][j]*(4*i-2)*i; for(k=j=0;j<len;j++) { a[i][j]+=k; k=a[i][j]/10000; a[i][j]%=10000; } while(k) { a[i][len++]=k%10000; k=k/10000; } for(j=len-1;j>=0;j--) { t=a[i][j]%(i+1); a[i][j-1]+=t*10000; a[i][j]=a[i][j]/(i+1); } } while(scanf("%d",&n),n!=0) { for(i=len-1;i>=0;i--) if(a[n][i]!=0) { printf("%d",a[n][i]); break; } for(j=i-1;j>=0;j--)printf("%04d",a[n][j]); printf("\n"); } return 0;}此題基本上和1130的 How Many Trees?类似,只是多加了一个排列数。卡特兰数的公式C(n) = ( 4n - 2 ) * C( n-1) / (n+1)这个相当于在卡特兰数的基础上乘以一个n!,即:n!*C(n) = n! * (4n - 2) * C(n-1) / (n+1) = (4n - 2) * n * ((n-1)! * C(n-1)) / (n+1)另H(n) = n! * C(n),则有: H(n) = (4n - 2) * n * H(n-1) / (n+1)H(1) = 1*C(1) = 1所以推导公式如下:H(1) = 1;H(n) = n * (4n - 2) * H(n-1) / (n+1)
0 0
- hdu 1023 hdu 1131
- hdu 1131
- HDU 1131
- Catalan数 HDU 2067 HDU 1023 HDU 1131
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- HDU
- HDU
- hdu
- hdu
- HDU
- Hdu
- hdu
- hdu-
- 快速排序
- hdu 1042
- 电商行业有哪些营销手段可以借鉴到实体零售行业?
- hdu 1130
- [读书笔记]互联网之美
- hdu 1131
- hdu 1133
- POJ 2356 Find a multiple 鸽巢原理
- hdu 1250
- 版本管理工具之svn
- hdu 1592
- easyui菜单项的置灰操作
- hdu 4081 最小生成树变形
- Mac 中安装titanium 遇到的错误解决