HDU 1023 Train Problem II 大数打表Catalan数
一个出栈有多少种顺序的问题。一般都知道是Catalan数了。
问题是这个Catalan数非常大,故此须要使用高精度计算。
并且打表会速度快非常多。打表公式要熟记:
Catalan数公式 Cn=C(2n,n) / (n+1);
递推公式 C(n ) = C(n-1)*(4*n-2) / (n+1)
高精度乘以一个整数和高精度除以一个整数的知识。这样还是使用整数数组比較好计算,假设使用string那么就不太好计算了,由于整数也可能是多位的。
const int MAX_N = 101;
short catalan[MAX_N][MAX_N];//catlans[i][0] save the length void calCatalans()
{
short carry = 0, len = 1;
catalan[1][0] = 1; catalan[1][1] = 1;
catalan[2][0] = 1; catalan[2][1] = 2;
for (int i = 3; i < MAX_N; i++)
{
carry = 0;
for (int j = 1; j <= len; j++)//高精度乘以一个整数
{
short sum = catalan[i-1][j]*((i<<2)-2) + carry;
carry = sum / 10;
catalan[i][j] = sum % 10;
}
while (carry)
{
catalan[i][++len] = carry % 10;
carry /= 10;
}
for (int j = len; j > 0; j--)//高精度除以一个整数
{
short sum = catalan[i][j] + carry*10;
catalan[i][j] = sum / (i+1);
carry = sum % (i+1);//一定能除尽。故此无需考虑余数情况
}
while (catalan[i][len] == 0) len--;
catalan[i][0] = len;
}
} int main()
{
calCatalans();
int n;
while (~scanf("%d", &n))
{
for (int i = catalan[n][0]; i > 0; i--)
{
printf("%d", catalan[n][i]);
}
putchar('\n');
}
return 0;
}
HDU 1023 Train Problem II 大数打表Catalan数的更多相关文章
- HDU 1023 Train Problem II (大数卡特兰数)
Train Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- hdu 1023 Train Problem II
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1212 Train Problem II Description As we all know the ...
- HDU 1023 Train Problem II( 大数卡特兰 )
链接:传送门 题意:裸卡特兰数,但是必须用大数做 balabala:上交高精度模板题,增加一下熟悉度 /************************************************ ...
- HDU 1023 Train Problem II (卡特兰数,经典)
题意: 给出一个数字n,假设火车从1~n的顺序分别进站,求有多少种出站序列. 思路: 卡特兰数的经典例子.n<101,用递推式解决.需要使用到大数.n=100时大概有200位以下. #inclu ...
- HDU 1023 Traning Problem (2) 高精度卡特兰数
Train Problem II Time Limit: 1000MS Memory Limit: 32768KB 64bit IO Format: %I64d & %I64u Sub ...
- 1023 Train Problem II(卡特兰数)
Problem Description As we all know the Train Problem I, the boss of the Ignatius Train Station want ...
- HDOJ 1023 Train Problem II 卡特兰数
火车进站出站的问题满足卡特兰数...卡特兰数的相关知识如下: 卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列.由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名. ...
- HDOJ 1023 Train Problem II
考虑第1个火车出站的时刻,从1到n都有可能,如果它是第i个出栈,那么前面有规模为i-1的子问题,后面有规模为n-i的子问题.累加.
- Train Problem II(卡特兰数 组合数学)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1023 Train Problem II Time Limit: 2000/1000 MS (Java/ ...
随机推荐
- .Net高级技术——垃圾收集器
垃圾收集器概述 大排档和学校食堂.一个是别人帮你收拾盘子,一个是自己收拾盘子. 垃圾收集GC(Garbage Collection).内存的分配.回收不需要程序员操心,程序员只要需要的时候new就可以 ...
- 具体解释Ajax技术
Ajax 可以做什么? 现在 Google Suggest 和 Google Maps 使用了 Ajax,通过 Ajax,我们能够使得client得到丰富的应用体验及交换操作,而用户不会感觉到有网页提 ...
- linux升级mysql到5.7
原文:http://blog.csdn.net/qing_gee/article/details/41774265 Linux升级MySQL版本到5.7. 1.下载Linux的5.7版本,主要需要两个 ...
- 通过@Value注解读取.properties配置内容
@Controller @RequestMapping("/value") public class ValuePropertyController extends Applica ...
- Objective-C:NSString类的常见用法
几种常见的用法为:字符串的创建.字符串的搜索.字符串的比较.字符串的转换 用途一:字符串的创建 void ex1() { //1.常量字符串的对象 NSString *str1 = @"he ...
- 第六章 JVM垃圾收集器(2)
上一章记录了几种常见的垃圾收集器,见<第五章 JVM垃圾收集器(1)> 1.G1 说明: 从上图来看,G1与CMS相比,仅在最后的"筛选回收"部分不同(CMS是并发清除 ...
- c++学习之友元
最近工作好累呀,晚上总是失眠,自学c++的步骤都放慢了,本来之前看c++ primer的,结果这本书讲的太细节了,初学者不是很好把握.所以我又重新找了个教程,比较适合初学者.今天学习到友元函数和友元类 ...
- WCF 添加 RESTful 支持,适用于 IIS、Winform、cmd 宿主
You can expose the service in two different endpoints. the SOAP one can use the binding that support ...
- Bootstrap学习js插件篇之滚动监听
1.滚动监听 案例 滚动监听插件可以根据滚动条的位置自动更新所对应的导航标记.Bootstrap中文网左侧就是一个滚动监听的例子. 代码段: <nav id="navbar-examp ...
- ASM下裸设备的路径更改是否会影响数据库的执行
通过asm来存储数据库文件,在linux下能够通过asmlib的方式来管理块设备,也能够直接使用裸设备来建立asm磁盘.在asmlib方式下,磁盘设备启动顺序和名称的改变不会影响到asm的使用.但假设 ...