BOJ 288

诶,数学弱爆了..比赛时候没推出来

组合数学里的母函数(x+x^2+……+x^n)^m的展开式中x^k的系数

整理得x^m   *  (1-x^n)^m   *   (1-x)^(-m)就可以得到x^k的系数

#include <cstdio>
int main()
{
    int n, m, k;
    while (scanf("%d%d%d", &n, &m, &k) != EOF)
    {
        double ans = 0;
        if (k < m)
        {
            printf("%.2lf\n", ans);
            continue;
        }
        for (int i = 0; i <= (int)((k - m) / n); i++)
        {
            double tmp = (double)m;
            for (int j = k - i * n - m + 1; j <= k - i * n - 1; j++)
                tmp *= j;
            for (int j = 1; j <= i; j++)
                tmp /= j;
            for (int j = 1; j <= m - i; j++)
                tmp /= j;
            ans += (1 - 2 * (i % 2)) * tmp;
        }
        for (int i = 1; i <= m; i++)
            ans /= n;
        printf("%.2lf\n", ans);
    }
}


 

你可能感兴趣的:(BOJ 288)