首页 > 代码库 > hdu 3723 Card Game(JAVA,卡特兰数)

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

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

于是用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);    	 }     }}

  

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