求组合数

    xiaoxiao2022-07-06  247

    1、求 C(n,m)

    把n!与m阶乘约分为 (m+1)*(m+2)...n。

    之后除以(n-m)!

    LL combination(int n, int m){ if(m < n-m) m = n-m; LL ans = 1; for(int i = m+1; i <= n; ++i) ans *= i; for(int i = 1; i <= n-m; ++i) ans /= i; return ans; }

    2、求A(n,m)

    LL A(int n, int m){ LL ans = 1; while(m--){ ans *= n--; } return ans; }

     

    最新回复(0)