[NOIP2011]计算系数

[NOIP2011]计算系数

https://ac.nowcoder.com/acm/problem/16596

题目描述

给定一个多项式(ax+by)k,请求出多项式展开后xnym项的系数。

输入描述:

共一行,包含5个整数,分别为a,b,k,n,m,每两个整数之间用一个空格隔开。

输出描述:

输出共1行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007取模后的结果。

示例1

输入

1 1 3 1 2 输出

3

这道题我一开始只通过30%,一直搜组合数学,各种方式还是通过不了;

看别人的代码也是求组合式的值那块一脸懵逼,不知所云。

然后查阅资料才知道原来有这么一个公式算组合式的值

alt

其他思路相信你也和我差不多。

实现代码如下

#include<iostream>
  
using namespace std;
typedef long long ll;
const int mod=10007;
ll fac[1010];
void da()
{
    fac[0]=1;
    for(int i=1;i<1010;i++)
    {
        fac[i]=fac[i-1]*i%mod;
    }
}

ll fastpow(ll x,ll n)
{
    if(n==1)return x%mod;
    ll temp=(fastpow(x,n/2))%mod;
    if(n&1)return (x*temp*temp)%mod;
    else return (temp*temp)%mod;
}

ll C(ll n,ll k)
{
    return (fac[n]*fastpow(fac[k]*fac[n-k]%mod,mod-2))%mod;
}

int main()
{
    da();
    ll a,b,k,n,m;
    cin>>a>>b>>k>>n>>m;
    cout<<((C(k,n)%mod)*(fastpow(a,n)%mod)*(fastpow(b,m)%mod))%mod<<endl;
    return 0;
}
全部评论

相关推荐

03-13 16:51
已编辑
门头沟学院 硬件开发
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务