hdu 3723 Card Game(JAVA,卡特兰数)

时间:2014-10-04 03:22:45   收藏:0   阅读:281

很容易想到的卡特兰数,不过复杂度高精度还是挺恶心的。

于是用JAVA秒杀了。

import java.math.BigInteger;
import java.util.Scanner;
public class Main {
     static BigInteger[] f=new BigInteger[5005];
     static BigInteger[] c=new BigInteger[10005];
     static BigInteger MOD;
     
     static void init(){
    	 f[0]=BigInteger.valueOf(1);
    	 for(int i=1;i<=5000;i++){
    		 f[i]=f[i-1].multiply(BigInteger.valueOf(4*i-2));
    		 f[i]=f[i].divide(BigInteger.valueOf(i+1));
    	 }
    	 String str="1";
    	 for(int i=0;i<100;i++)str+="0";
    	 MOD=new BigInteger(str);
     }
     public static void main(String[] args){
    	 init();
    	 Scanner cin=new Scanner(System.in);
    	 while(cin.hasNext()){
    		 int n=cin.nextInt();
    		 c[0]=BigInteger.valueOf(1);
    		 for(int i=1;i<=n;i++){
    			 c[i]=c[i-1].multiply(BigInteger.valueOf(n-i+1));
    			 c[i]=c[i].divide(BigInteger.valueOf(i));
    		 }
    		 BigInteger ans=BigInteger.valueOf(0);
    		 for(int i=0;i*2<=n;i++){
    			 BigInteger tmp=c[i*2].mod(MOD).multiply(f[i].mod(MOD));
    			 ans=ans.add(tmp);
    			 ans=ans.mod(MOD);
    		 }
    		 System.out.println(ans);
    	 }
     }
}

  

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!