HDU-1023 Train Problem II 卡特兰数(结合高精度乘除)
2018-02-10 00:59
387 查看
题目链接:https://cn.vjudge.net/problem/HDU-1023
题意
卡特兰数的应用之一
求一个长度为n的序列通过栈后的结果序列有几种
思路
一开始不知道什么是卡特兰数,猜测是一个递推题
注意到在序列第i个元素入栈时,前几个元素都进过栈,就是通过栈的操作
设n个元素通过栈的结果序列个数为h
,则有:
\[ h_n=h_1h_{n-1}+h_2h_{n-2}+...+h_{n-1}h_1 \]
查了以后发现这是卡特兰数的规律,有通项:
\[ h_n=h_{n-1}\frac{4n-2}{n+1} \]
考虑到又要写高精度算法,想写python,发现没有python,只能先学一下java好了...
代码
// Main.java import java.math.BigInteger; import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner cin=new Scanner(System.in); BigInteger[] num=new BigInteger[100+5]; num[1]=new BigInteger("1"); for (int i=2; i<=100; i++){ Integer tmp1=4*i-2, tmp2=i+1; BigInteger a=new BigInteger(tmp1.toString()); BigInteger b=new BigInteger(tmp2.toString()); num[i]=num[i-1].multiply(a).divide(b); } while (cin.hasNext()){ int n=cin.nextInt(); System.out.println(num ); } } }
Time | Memory | Length | Lang | Submitted |
---|---|---|---|---|
202ms | 9892kB | 632 | Java | 2018-02-09 19:18:25 |
相关文章推荐
- 【HDU-1023】 Train Problem II 【卡特兰数+高精度】
- hdu 1023 ——Train Problem II(卡特兰数+高精度+java)
- HDU 1023 Train Problem II 卡特兰数 高精度
- hdu 1023 Train Problem II----catalan数列.大数乘除
- hdu 1023 Train Problem II_出栈方法数_卡特兰数
- HDU 1023 Train Problem II(卡特兰数)
- hdu 1023 Train Problem II (卡特兰数)
- HDU 1023 Train Problem II (卡特兰数)未解决未解决未解决未解决
- hdu1023 Train Problem II 卡特兰数,JAVA大数类
- HDU 1023 Train Problem II (打表求解卡特兰数)
- HDU 1023 Train Problem II(卡特兰数)
- hdu 1023 Train Problem II【卡特兰数】
- hdu 1023 Train Problem II (卡特兰数)
- hdu 1023 Train Problem II(卡特兰数)
- hdu 1023 Train Problem II (卡特兰数)
- hdu 1023 Train Problem II 完整高精度模板(以输出大Catalan为例)
- HDU1023 Train Problem II【卡特兰数+大数+亿进制+打表】
- hdu 1023 Train Problem II(卡特兰数的应用)出栈序列的统计
- hdu 1023 Train Problem II 完整高精度模板(以输出大Catalan为例)
- HDU-1023 -Train Problem II(卡特兰数)