hdu1023 Train Problem II(卡特兰数)

题目意思:

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

求出第n个卡特兰数,n<1000.

题目分析:

很明显c(n)将很大,我们可以用大数模板,也可以用java中的大整数类,这里用到了java,将java在处理大数的时候还是很有优势的。

AC代码:

/**
 * java实现卡特兰数
 *  前几项:1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786,208012…
 *  公式       C(n)=C(2n,n)/(n+1)
 */
import java.math.BigInteger;
import java.util.Scanner;

public class Main {

	static BigInteger f(int n){
		BigInteger s=BigInteger.ONE;
		for(int i=2;i<=n;i++){
			s=s.multiply(BigInteger.valueOf(i));
		}
		return s;
	}
	public static void main(String[] args) {
		int n;
		Scanner sc=new Scanner(System.in);
		while(sc.hasNext()){
			n=sc.nextInt();
			BigInteger res=f(2*n).divide(f(n)).divide(f(n));
			System.out.println(res.divide(BigInteger.valueOf(n+1)));
		}
	}
}
时间: 2024-10-15 04:07:45

hdu1023 Train Problem II(卡特兰数)的相关文章

HDU 1023 Train Problem II (卡特兰数,经典)

题意:给出一个数字n,假设火车从1~n的顺序分别进站,求有多少种出站序列. 思路:卡特兰数的经典例子.n<101,用递推式解决.需要使用到大数.n=100时大概有200位以下. 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int N=101; 4 vector<string> vect; 5 void _mult(string num1, string num2, string &result )

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

Train Problem II  题目大意:给你一个数n,表示有n辆火车,编号从1到n,从远方驶过来,问你有多少种出站的可能. 解题思路:模拟栈的问题而已.  卡特兰问题. 1 import java.math.*; 2 import java.util.*; 3 import java.io.*; 4 5 public class Main 6 { 7 static int MS=101; 8 public static void main(String[] args) 9 { 10 Sca

hdu acm 1023 Train Problem II -&gt;卡特兰(Catalan大数)

#include<iostream> using namespace std; struct Node //节点 { int num[105]; int len; //数的长度 } a[105]; void CalCatalen() //卡特兰数计算 { int i,j,len,c,t; //len长度,c进位 a[1].num[0]=a[1].len=1; len=1; for(i=2;i<=100;i++) { for(j=0;j<len;j++) //乘法,分子部分 a[i]

HDU1023 Train Problem II【Catalan数】

题目链接: 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> #

hdu1023 Train Problem II

结题思路很容易想到递归,用记忆化搜索方式寻找答案. 由于ans可能非常大,用c++需要自己写加法器. acm.hdu.edu.cn/showproblem.php?pid=1023 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 5 using namespace std; 6 typedef __int64 LL; 7 const int maxn = 150 + 10; 8 char

ACM-卡特兰数之Train Problem II——hdu1023

***************************************转载请注明出处:http://blog.csdn.net/lttree*************************************** Train Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5589    Accept

hdu 1023 Train Problem II 这题运用到大数相乘+大数相除+卡特兰数

Train Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6454    Accepted Submission(s): 3514 Problem Description As we all know the Train Problem I, the boss of the Ignatius Train Stat

hdoj 1023 Train Problem II 【卡特兰数】

Train Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6928    Accepted Submission(s): 3750 Problem Description As we all know the Train Problem I, the boss of the Ignatius Train Stat

(母函数 Catalan数 大数乘法 大数除法) Train Problem II hdu1023

Train Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 10372    Accepted Submission(s): 5543 Problem Description As we all know the Train Problem I, the boss of the Ignatius Train Sta