首页 > 其他 > 详细

[NOIP2011] 计算系数

时间:2019-04-05 14:51:30      阅读:150      评论:0      收藏:0      [点我收藏+]

洛咕

题意:给定一个多项式\((ax+by)^k=\sum_{i=0}^kC_k^ia^ib^{k-i}x^iy^{k-i}\),请求出多项式展开后\(x^n \times y^m\)项的系数.

分析:由二项式定理\((a+b)^k=\sum_{i=0}^k C_n^ia^ib^{n-i}\)\((ax+by)^k=\sum_{i=0}^kC_k^ia^ix^ib^{k-i}y^{k-i}\),所以\(x^ny^m\)项的系数就是\(C_k^na^nb^m\),直接算组合数和快速幂就好了.

#include<bits/stdc++.h>
#define LL long long
using namespace std;
inline LL read(){
   LL s=0,w=1;char ch=getchar();
   while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
   while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();}
   return s*w;
}
const LL mod=10007;
LL jc[1005];
inline LL ksm(LL a,LL b){
    LL cnt=1;
    while(b){
        if(b&1)cnt=(cnt*a)%mod;
        a=(a*a)%mod;
        b>>=1;
    }
    return cnt%mod;
}
inline LL C(LL n,LL m){
    if(n<m)return 0;
    return ((jc[n]*ksm(jc[m],mod-2))%mod*ksm(jc[n-m],mod-2))%mod;
}
int main(){
    LL a=read(),b=read(),k=read(),n=read(),m=read();
    jc[0]=1;for(int i=1;i<=k;i++)jc[i]=(jc[i-1]*i)%mod;
    printf("%lld\n",((ksm(a,n)*ksm(b,m))%mod*C(k,n))%mod);
    return 0;
}

[NOIP2011] 计算系数

原文:https://www.cnblogs.com/PPXppx/p/10658602.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!