标签: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);
}
}
}
标签:blog ar java for div c log r ad
原文地址:http://www.cnblogs.com/wshh/p/4005558.html