码迷,mamicode.com
首页 > 其他好文 > 详细

组合数(模板)

时间:2017-08-30 20:07:30      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:void   logs   efi   利用   初始化   ini   sizeof   com   init   

  1. 利用 C[i][j] = C[i-1][j-1] + C[i][j-1] 递推求解

long long C[1000][1000]; // C[i][j] 表示 C(j,i)%mod j中取i;
void Combination()
{
    memset(C, 0x0000, sizeof(C));
    for(int i = 0; i < 1000; i++)
    {
        for(int j = i; j < 1000; j++)
        {
            if(i==0) C[i][j] = 1;
            else if(i==j) C[i][j] = 1;
            else C[i][j] = (C[i-1][j-1] + C[i][j-1])%mod;
        }
    }
}

 

  2.

#define mod 1000000007
long long A[1000000]; // A[i] 表示 i 的阶乘
long long ex(long long x, long long n) //return  x^n
{
    long long sum = 1;
    while(n)
    {
        if( n&1 )
        {
            sum *= x;
            sum %= mod;
        }
        n /= 2;
        x *= x;
        x %= mod;
    }
    return sum;
}
long long C(long long n, long long m) // return C(n, m)
{
    if(m > n || m < 0) return 0;
    return A[n]*ex(A[n-m]*A[m]%mod, mod-2)%mod;
}    
void initCombination() // 先初始化 A 数组
{
    A[0] = 1;
    for(int i = 1; i <= 200000; i++)
    {
        A[i] = A[i-1]*i%mod;
    }
} 

 

组合数(模板)

标签:void   logs   efi   利用   初始化   ini   sizeof   com   init   

原文地址:http://www.cnblogs.com/lkcc/p/7454287.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!