题目分析以及公式推导:
import java.io.*; import java.util.*; import java.math.BigInteger; public class Solution { public static BigInteger fac[]=new BigInteger[2013]; public static void main(String[] args) { init(); Scanner cin = new Scanner(system.in); int t = cin.nextInt(); while(t--!=0) { int p=cin.nextInt(); BigInteger ans=fac[2*p]; BigInteger temp=fac[p]; ans=ans.divide(temp); ans=ans.divide(temp); ans=ans.subtract(BigInteger.valueOf(2)); ans=ans.divide(BigInteger.valueOf(p)); ans=ans.add(BigInteger.valueOf(2)); System.out.println(ans); } } public static void init() { for(int i=1;i<2012;i++) fac[i]=BigInteger.ONE; for(int i=2;i<2012;i++) fac[i]=fac[i-1].multiply(BigInteger.valueOf(i)); } }