题目链接:

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);  //去掉数组前导0printf("%d",A[N][i++]); //输出第一个非0数for(; i < MAXN; ++i)    //输出后边的数,每位保持4位长度printf("%04d",A[N][i]);printf("\n");}return 0;
}

HDU1023 Train Problem II【Catalan数】相关推荐

  1. hdu1032 Train Problem II (卡特兰数)

    题意: 给你一个数n,表示有n辆火车,编号从1到n,入站,问你有多少种出站的可能.    (题于文末) 知识点: ps:百度百科的卡特兰数讲的不错,注意看其参考的博客. 卡特兰数(Catalan):前 ...

  2. HDU1023 Train Problem II

    传送门https://vjudge.net/problem/HDU-1023 解题思路: 大数和卡特兰数 实现代码: #include <iostream> #include <cs ...

  3. Train Problem II(卡特兰数 组合数学)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1023 Train Problem II Time Limit: 2000/1000 MS (Java/ ...

  4. hdu 1023 Train Problem II

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1212 Train Problem II Description As we all know the ...

  5. Train Problem II 卡特兰裸题(入门题)

    Train Problem II  题目大意:给你一个数n,表示有n辆火车,编号从1到n,从远方驶过来,问你有多少种出站的可能. 解题思路:模拟栈的问题而已.  卡特兰问题. 1 import jav ...

  6. 【HDOJ】1023 Train Problem II_天涯浪子_新浪博客

    [题目]http://acm.hdu.edu.cn/showproblem.php?pid=1023 [报告] 简单粗暴的卡特兰数,不过要用大数才能过呦~ [程序] // Task: 1023 Tra ...

  7. java棋盘问题_0x03大数问题(JAVA解决棋盘覆盖,A+B Problem II)

    常见的有棋盘覆盖和A+B问题,这类问题牵扯到的数值都比较大,如果用一般的数值类型,肯定输出不了,所以就要想一个办法,怎么把大数转换一下输出. A+B Problem II 时间限制:3000 ms | ...

  8. HDU.1002 A + B Problem II

    原题 HDU.1002 A + B Problem II 分类 杂题·大位整数运算 题意 计算从任意两个长度在1000以内的正整数的和. 输入/输出 要求与格式 输入内容 最开始一行开始输入样例数,对 ...

  9. hdu A + B Problem II(大数相加,数组实现)

    hdu A + B Problem II(大数相加,数组实现) 题目走起 注意最后一个case 不需要换行 下面代码 #include<stdio.h> #include<strin ...

最新文章

  1. 技术详解 | 如何用GAN实现阴影检测和阴影去除?
  2. Deepmind最新研究:从图表示学习看算法推理
  3. 国内首本Android开发图书之双剑
  4. CPropertyPage::OnSetActive()和OnKillActive()函数:属性页切换时的处理函数
  5. php转调页面,PHP中HTTP防盗链技术
  6. ntnub原理怎么看_电锤只转不冲击怎么回事?看懂了工作原理,你也可以动手解决...
  7. 吊打面试官系列:你会「递归」么?
  8. 阿里巴巴公布了一份最新的AI成绩单
  9. android5.1 PowerManagerService和DisplayPowerControler、DisplayPowerState关系
  10. python语言的记事本在哪_用python语言编写一个简单记事本
  11. mysql 复制权限不够_解决不能mysqldump备份权限不够的问题
  12. 螺旋测微器 flash_Flash 101-第5部分:螺旋式失控
  13. 人工蜂群算法求解货位优化问题
  14. 定期年化40%,我把5000多个FIL全部存入了DMEX平台
  15. android back键不退出程序,Android按back键不退出当前Activity
  16. HNU数据结构哈夫曼树建立
  17. 中国十大热门网站榜中榜/Alexa综合排名TOP10(2015)
  18. TEB算法详解(TebLocalPlannerROS::computeVelocityCommands(2))
  19. 实习日记 7.11
  20. VBA给Office添加任务窗格

热门文章

  1. 【BZOJ】【1008】【HNOI】越狱
  2. Sharding-JDBC水平分表(最终测试)_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记009
  3. Elasticsearch--linux网络设置 开启密码访问---全文检索引擎ElasticSearch工作笔记021
  4. ARM裸机工作笔记0001---ARM那些事
  5. java工作笔记021---Java设计模式_观察者模式_事件驱动模式
  6. VB.Net工作笔记001---用ASP调用VB.NET编写的dll_ClassLibrary
  7. Git工作笔记004---torisegit使用时Updates were rejected because the tip of your current branch i
  8. ASP.Net学习笔记015--ASP.Net中使用Cookie
  9. 调试acf 遇到的问题
  10. CSS样式重叠,前端显示的效果