bzoj2729 [HNOI2012]排队
组合数学,推一下式子,并不难推。
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 }