博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1123 Train Problem II
阅读量:5236 次
发布时间:2019-06-14

本文共 1420 字,大约阅读时间需要 4 分钟。

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1023

 

该题就是求卡特兰数,只是处理的时候要用大数来处理,

使用递推公式:

h(n)=C(2n,n)/(n+1) (n=0,1,2,...)

= A(2n,n)/(n+1)!

 

改写我先求A(2n,n)

然后除以(n+1)!

1 #include 
2 #include
3 #include
4 5 using namespace std; 6 7 #define N 250 8 int a[N]; 9 10 void init(int n)11 {12 memset(a,0,sizeof(a));13 a[0] = 1;14 int i = 0;15 int j = 0;16 int k1 = 1;17 for(i = 2*n; k1 <= n; i--,k1++)18 {19 int t = 0;20 int mul = 0;21 for(j = 0; j <= N; j++)22 {23 mul = a[j] *i + t;24 a[j] = mul % 10;25 t = mul / 10;26 }27 }28 29 for(i = 2; i <= n+1; i++)30 {31 int t1 = 0;32 int mul1 = 0;33 for(j = N; j >= 0;j--)34 {35 mul1 = mul1 *10 + a[j];36 a[j] = mul1 / i;37 mul1 %= i;38 }39 }40 41 int k = N;42 while(k--)43 if(a[k])44 break;45 k += 1;46 while(k--)47 printf("%d",a[k]);48 printf("\n");49 }50 51 int main()52 {53 int n;54 while(scanf("%d",&n) != EOF)55 {56 if(n < 2)57 printf("%d\n",1);58 else59 init(n);60 }61 return 0;62 }

 

转载于:https://www.cnblogs.com/yyroom/archive/2013/04/22/3035710.html

你可能感兴趣的文章
python virtualenv学习
查看>>
2-Add Two Numbers @LeetCode
查看>>
Linux软件包安装(rpm、yum、apt-get)
查看>>
间隔时间显示数字html代码
查看>>
fedora 启动 openssh
查看>>
uniq&cut&tee命令
查看>>
滴滴持续扩招私车 倒逼官方就范
查看>>
架构漫谈:UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别...
查看>>
[差分约束]糖果
查看>>
镜像队列
查看>>
javascript入门篇(四)
查看>>
mongodb设计模式策略之读书笔记
查看>>
编码原则:短小的函数
查看>>
第二十六篇:关系运算符和逻辑运算&&、||、!、位域(Bit Field)等
查看>>
双向多对多
查看>>
微信开发:微信js_sdk分享,使用场景,网页在微信app内部分享时的标题与描述,包括logo设置(一)...
查看>>
_cdecl与_stdcall区别
查看>>
ng2-admin安装问题
查看>>
python + slenium自动化测试设置元素等待
查看>>
hive 学习笔记精简
查看>>