您的位置:首页 > 其它

hdu 1131 卡特兰数,大数

2017-08-07 14:56 429 查看
这道题和hdu1130 是姊妹题。

hdu 1130是典型的卡特兰数题。这题又加了标签,所以总数是卡特兰数乘以n的阶乘。

/*
*  create by zzy at 2017,2:03:40 PM
*/

import java.math.BigInteger;
import java.util.Scanner;
public class Main {

static int max=105;
static BigInteger[]h=new BigInteger[max];

static BigInteger[] fact=new BigInteger[max];

public static void getFactorial(){

fact[0]=BigInteger.valueOf(1);
fact[1]=BigInteger.valueOf(1);
for(int i=2;i<max;i++){
// n!= n*(n-1)!
// fact(i) =i*fact(i-1)
fact[i]=BigInteger.valueOf(i).multiply(fact[i-1]);
}

}
public static  void  getCatlanten(){
h[0]=BigInteger.valueOf(1);
h[1]=BigInteger.valueOf(1);

for(int i=2;i<max;i++){

//hn=(4*n-2)/(n+1) *h[n-1]

h[i]=h[i-1].multiply(BigInteger.valueOf(4*i-2)).divide(BigInteger.valueOf(i+1));

}

}

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int n;

getCatlanten();
getFactorial();
while(in.hasNextInt()){

n=in.nextInt();
if(n==0)break;

System.out.println(h
.multiply(fact
));
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: