【題解】 P1313 計算系數
阿新 • • 發佈:2019-04-02
pac block can power amp urn sca input i+1
\(Description:\)
給出多項式\((by+ax)^k\),求出展開後\(x^n*y^m\)的系數(保證\(n+m=k\))
\(Sample\) \(Input\):
1 1 3 1 2
\(Sample\) \(Output\):
3
一眼二項式定理,但是不會。。。
學了一下好像會用一丟丟了。
具體公式:
\((x+y)^n=\sum_{k=0}^{n}C(n,k)*x^k*y^{n-k}=\sum_{k=0}^{n}C(n,k)*x^{n-k}*y^k\)
發現對於這題要求的系數其實就是:
\(C(n,k)*a^n*b^m\)
那就很完美的解決了,這其實也沒必要發題解,我吃的空。。。。。。
#include<bits/stdc++.h> #define int long long using namespace std; int a,b,n,k,m; const int p=10007; const int MAXK=1000; int f[MAXK+5],inv[MAXK+5]; inline int power(int a,int b,int p){ int ret=1; for(;b;a=(a*a)%p,b>>=1)if(b&1)ret=(ret*a)%p; return ret; } inline int C(int n,int m){ if(n<m)return 1; if(n==m)return 1; return f[n]*((inv[m]*inv[n-m])%p)%p; } signed main(){ scanf("%lld%lld%lld%lld%lld",&a,&b,&k,&n,&m); f[0]=1; for(int i=1;i<=k;++i)f[i]=(f[i-1]*i)%p; inv[0]=1; inv[k]=power(f[k],p-2,p); for(int i=k-1;i>=1;--i)inv[i]=(inv[i+1]*(i+1))%p; printf("%lld\n",C(k,n)*power(a,n,p)%p*power(b,m,p)%p); return 0; }
【題解】 P1313 計算系數