码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-10-04 03:22:45      阅读:281      评论:0      收藏:0      [点我收藏+]

标签:blog   ar   java   for   div   c   log   r   ad   

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

于是用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,卡特兰数)

标签:blog   ar   java   for   div   c   log   r   ad   

原文地址:http://www.cnblogs.com/wshh/p/4005558.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!