组合数

int范围内的组合数已经是很大了,很多时候结果比long还大得多。
于是使用BigInteger存放:

    public static String combination(int n, int m) {
        BigInteger a = new BigInteger("1");
        BigInteger b = new BigInteger("1");
        for (int i = 1; i <= m; i++) {
            b = b.multiply(new BigInteger(String.valueOf(i)));
            a = a.multiply(new BigInteger(String.valueOf(n - i + 1)));
        }
        return a.divide(b).toString();
    }

C(1000,500):
270288240945436569515614693625975275496152008446548287007392875106625428705522193898612483924502370165362606085021546104802209750050679917549894219699518475423665484263751733356162464079737887344364574161119497604571044985756287880514600994219426752366915856603136862602484428109296905863799821216320
实在是太大了

posted @ 2020-09-24 01:01  Edwin_Xu  阅读(121)  评论(0编辑  收藏  举报