题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1023

题目大意:

一列N节的火车以严格的顺序到一个站里。问出来的时候有多少种顺序。

解题思路:

典型的求Catalan数的题目,可是结果会非常大,所以须要用大数来解决。

Catalan公式为 h(n) = h(n-1) * (4*n-2) / (n + 1),h(0) = h(1) = 1。

AC代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
const int MAXN = 100;
const int BASE = 10000; void Multiply(int A[], int Max, int b) //大数乘法 A[]*b 10000进制
{
int Array = 0;
for(int i = Max - 1; i >= 0; --i)
{
Array += b * A[i];
A[i] = Array % BASE;
Array /= BASE;
}
} void Divide(int A[], int Max, int b) //大数除法 A[]/b 10000进制
{
int Div = 0;
for(int i = 0; i < Max; ++i)
{
Div = Div * BASE + A[i];
A[i] = Div / b;
Div %= b;
}
} int A[MAXN+10][MAXN+10]; int main()
{
memset(A,0,sizeof(A));
A[1][99] = 1;
for(int i = 2; i < 101; ++i)
{
for(int j = 0; j < 100; ++j)
A[i][j] = A[i-1][j];
Multiply(A[i], MAXN, 4*i-2);
Divide(A[i], MAXN, i+1);
}
int N;
while(~scanf("%d",&N) && N != -1)
{
int i;
for(i = 0; i < MAXN && A[N][i] == 0; ++i); //去掉数组前导0
printf("%d",A[N][i++]); //输出第一个非0数
for(; i < MAXN; ++i) //输出后边的数,每位保持4位长度
printf("%04d",A[N][i]);
printf("\n");
}
return 0;
}

最新文章

  1. Windows操作系统下远程连接MySQL数据库
  2. 顺序表java实现
  3. &quot;undefined method `root&#39; for nil:NilClass&quot; error when using &quot;pod install&quot; 解决办法
  4. android中ColorStateList及StateListDrawable设置Selector
  5. Linux文件标示
  6. poj 1163 The Triangle
  7. Linux第三次实验报告
  8. 复选框全选、全不选和反选的效果实现VIEW:1592
  9. 函数fsp_alloc_seg_inode
  10. Codeforces Round #343 (Div. 2) D - Babaei and Birthday Cake 线段树+DP
  11. Hibernate五 HQL查询
  12. Java拾遗(一):浅析Java子类和父类的实例化顺序 及 陷阱
  13. 编写JQuery插件-1
  14. CF1097G Vladislav and a Great Legend
  15. 06_java基础知识——break/continue和标签的配合使用
  16. CSS选择器命名及常用命名
  17. Java NIO6:选择器1——理论篇
  18. ActiveMQ_3Java实现
  19. Cura - CuraEngine - 架构分析
  20. Subset II leetcode java

热门文章

  1. 最长回文字串 (The longest palindrome substring)
  2. Delphi的参数修饰const/var/output 与C++的对应关系
  3. 2015北京网络赛 J Scores bitset+分块
  4. 基于Java的开源3D游戏引擎jMonkeyEngine
  5. [ Linux ] 釋放記憶體指令(cache) - 轉載
  6. 分享js中 pageY = clientY + document.body.scrollTop 之间的关系
  7. Linux远程远程控制程序TeamViewer
  8. while my time-- , will the meaning++?
  9. 推荐学习《Python与量化投资从基础到实战》PDF及代码+《量化投资以Python为工具》PDF及代码
  10. 【Uva 1627】Team them up!