[NOIP2011] 計算系數
阿新 • • 發佈:2019-04-05
aix return space pri times == etc ref amp
洛咕
題意:給定一個多項式\((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] 計算系數