组合数学,推一下式子,并不难推。
java代码
1 import java.io.*; 2 import java.math.BigInteger; 3 import java.util.*; 4 public class Main 5 { 6 7 public static void main(String args[]) throws Exception 8 { 9 Scanner cin=new Scanner(System.in);10 int n=cin.nextInt();int m=cin.nextInt();11 BigInteger ans,t,tt;12 ans=BigInteger.valueOf(1);13 for (int i=1;i<=n;i++)14 ans=ans.multiply(BigInteger.valueOf(i));15 for (int i=1;i<=m;i++)16 ans=ans.multiply(BigInteger.valueOf(i));17 ans=ans.multiply(BigInteger.valueOf(2));18 19 t=BigInteger.valueOf(1);20 for (int i=1;i<=n+3;i++)21 t=t.multiply(BigInteger.valueOf(i));22 for (int i=1;i<=m;i++)23 t=t.divide(BigInteger.valueOf(i));24 for (int i=1;i<=n+3-m;i++)25 t=t.divide(BigInteger.valueOf(i));26 for (int i=n;i<=n+1;i++)27 t=t.multiply(BigInteger.valueOf(i));28 t=t.divide(BigInteger.valueOf(2));29 30 tt=BigInteger.valueOf(n+1);31 for (int i=1;i<=n+2;i++)32 tt=tt.multiply(BigInteger.valueOf(i));33 for (int i=1;i<=m-1;i++)34 tt=tt.divide(BigInteger.valueOf(i));35 for (int i=1;i<=n+2-m+1;i++)36 tt=tt.divide(BigInteger.valueOf(i));37 38 ans=ans.multiply(t.add(tt));39 40 41 System.out.println(ans);42 }43 44 }