1. 程式人生 > >hdu 1023(大數+卡特蘭數)

hdu 1023(大數+卡特蘭數)

題目:和那個I有關,是問火車按一定順序進站,出戰的順序有多少中。

分析: 典型的卡特蘭數,但本題數量巨大  所以採用大數來寫  java中提供了大數類,所以用了java寫

卡特蘭數公式:h(n)=C(2n,n)/(n-1)  遞推式: h(n)=h(n-1)*(4*n-2)/(n+1);

程式碼如下:

import java.io.*;  
import java.math.BigInteger;  
import java.util.*; 

public class Main {
	
    public static void main(String[] args) {
    	Scanner cin=new Scanner(System.in);
    	BigInteger s[]=new BigInteger[105];
    	s[1]=BigInteger.ONE;
    	for(int i=2;i<105;i++){
    		s[i]=s[i-1].multiply(BigInteger.valueOf((4*i-2))).divide(BigInteger.valueOf(i+1));
    	}
    	while(cin.hasNext()){
    		int n=cin.nextInt();
    		System.out.println(s[n]);
    	}
     }
}