hdu1023:卡特兰数

火车进站问题

卡特兰数引入的例子。

卡特兰数递推公式:h(n)=h(n-1)*(4*n-2)/(n+1)

通项公式:h(n)=c(2n,n)/(n+1)...

这题需要高精度,刚好学了一下java。。。第一次写的java好丑啊,还好1y了。。

import java.math.*;

import java.util.*;

public class Main 

{

    public static BigInteger BI(int x)

    {

        return BigInteger.valueOf(x);

    }

    public static BigInteger solve(BigInteger n)

    {

        BigInteger res;

        if(n.compareTo(BI(1))==0)

            res=BI(1);

        else

        {

            res=solve(n.add(BI(-1)));

            res=res.multiply(n.multiply(BI(4)).add(BI(-2)));

            res=res.divide(n.add(BI(1)));

        }

        return res;

    }

    public static void main(String[] args) 

    {

        Scanner in = new Scanner(System.in);

        while(in.hasNext())

        {

            BigInteger a=in.nextBigInteger();

            System.out.println(solve(a));

        }        

    }

}

 

你可能感兴趣的:(HDU)