·
- 最简单的情况,数据比较小,直接采用 Cmn=n!m!(n−m)!=n(n−1)(n−2)...(n−m+1)(m! C n m = n ! m ! ( n − m ) ! = n ( n − 1 ) ( n − 2 ) . . . ( n − m + 1 ) ( m ! 试用数据范围:a <= 29。在a = 30, b = 15时,计算分子阶乘时即超范围。
ll C(int n, int m) {
if (n < m) return 0;
if (n == m) return 1;
ll res = 1;
for(int i = n, j = 1; i >= n - m + 1; i--,j++) res *= i,res /= j;
return res;
}
乘的同时除一下,避免溢出。。。
练习题目:新生晚会 HDU - 2519
题解:请戳这里。。。。
其他以后补充。。。