洛谷题单指南-组合数学与计数-P1313 [NOIP 2011 提高组] 计算系数

原题链接:https://www.luogu.com.cn/problem/P1313

题意解读:计算多项式展开后某项的系数。

解题思路:二项式定理的裸题。

根据二项式定理:

image

(by+ax)k中有一项是C(k,m)(by)m(ax)n,因此xnym的系数为C(k,m)bman

用组合数和快速幂求解即可。

100分代码:

#include <bits/stdc++.h>
using namespace std;

const int N = 1005, MOD = 10007;
int c[N][N];
int a, b, k, n, m;

int ksm(int a, int b, int mod)
{
    int res = 1;
    while(b)
    {
        if(b & 1) res = 1ll * res * a % mod;
        a = 1ll * a * a % mod;
        b >>= 1;
    }
    return res;
}

int main()
{
    cin >> a >> b >> k >> n >> m;

    //组合数初始化
    for(int i = 0; i <= k; i++)
    {
        for(int j = 0; j <= i; j++)
        {
            if(j == 0) c[i][j] = 1;
            else c[i][j] = (c[i - 1][j - 1] + c[i - 1][j]) % MOD;
        }
    }

    int ans = c[k][m] * ksm(b, m, MOD) % MOD * ksm(a, n, MOD) % MOD;
    cout << ans;
    return 0;
}

 

posted @ 2025-11-19 15:44  hackerchef  阅读(10)  评论(0)    收藏  举报