UVALive 7360 Run Step (JAVA阶乘求组合数)

来源:互联网 发布:mac电脑死机怎么办 编辑:程序博客网 时间:2024/06/05 06:59

大体题意:

给你一个s,要求拆成2和1的和的形式,要求2的个数是偶数个,1的个数是偶数个,2不比1少,2和1的和为s

求方案数:

思路:

暴力求解即可! 直接枚举2的个数,在枚举1的个数

比如说2有m 个 1有n 个,那么这一组的答案就是( n+m)! / ((n!)*(m!) )

没有细想,直接用java大数了!

但也有教训,对java理解太少, 开数组竟然要用new,试了半小时= = !

import java.util.Scanner;  import java.math.BigInteger;      public class Main{         // @SuppressWarnings("null")//@SuppressWarnings("null")public static void main(String[] args){              Scanner sc = new Scanner(System.in);              BigInteger ans,shang,xia,xia2;            //BigInteger a73 = BigInteger.valueOf(10001);//            BigInteger a137 = BigInteger.valueOf(137);            int T ;            T = sc.nextInt();                        BigInteger dp[] = new BigInteger[101];            for (int i = 0; i < 101; ++i)dp[i] = BigInteger.valueOf(0);            int sum2 = 0,sum1 = 0;        for (int s = 2; s <= 100; ++s){        for (sum2 = 0;sum2*2 <= s; sum2+=2){        for (sum1 = 0; sum1 <= sum2; sum1 += 2){        if (sum1 + sum2*2 != s)continue;        shang = BigInteger.valueOf(1);        xia = BigInteger.valueOf(1);        xia2 = BigInteger.valueOf(1);        for (int j = 1; j <= (sum1+sum2)/2; ++j){        shang = shang.multiply(BigInteger.valueOf(j));                }        for (int j = 1; j <= sum1/2; ++j){        xia = xia.multiply(BigInteger.valueOf(j));                }        for (int j = 1; j <= sum2/2; ++j){        xia2 = xia2.multiply(BigInteger.valueOf(j));                }        ans = shang.divide(xia.multiply(xia2));        ans = ans.multiply(ans);        dp[s] = dp[s].add(ans);                }        }        //System.out.println(s + " " + dp[s]);;        }                                    for (int kase = 1; kase <= T; ++kase){            String k ;            int s = 0;            k = sc.next();            s = sc.nextInt();            //if (dp[s] != null)            System.out.println(k + " " + dp[s].toString());            //else System.out.println(k + " " + 0);                                                 }        }     }          


0 0