題目描述
給定一個多項式 ,請求出多項式展開後 項的係數。
輸入格式:
輸入文件名爲factor.in。
共一行,包含5 個整數,分別爲 a ,b ,k ,n ,m,每兩個整數之間用一個空格隔開。
輸出格式:
輸出共1 行,包含一個整數,表示所求的係數,這個係數可能很大,輸出對10007 取模後的結果。
輸入樣例:
1 1 3 1 2
輸出樣例:
3
題解
首先根據二項式定理,我們可以得到 ,因爲題目中要求說是求 展開後 的係數,
我們設 .則 ,
套入二項式定理就可以得到
,
把 代入就可以得到
,
先求出組合數,然後用快速冪就可以求出係數了。
代碼
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#define ll long long
const int MAXN=1002;
ll c[MAXN][MAXN];
int n,m,a,b,k;
using namespace std;
void Init()
{
c[0][0]=1;
for(int i=1;i<=k;i++)
{
c[i][0]=1;
for(int j=1;j<=k;j++)
{
c[i][j]=(c[i-1][j]%10007+c[i-1][j-1]%10007)%10007;
}
}
}
ll qsm(ll a,ll b)
{
ll sum=1;
while(b)
{
if(b&1)
sum=(sum*a)%10007;
a=a*a%10007;
b>>=1;
}
return sum%10007;
}
int main()
{
scanf("%d%d%d%d%d",&a,&b,&k,&n,&m);
Init();
printf("%lld",(c[k][m]*(qsm(a,n)%10007*qsm(b,m)%10007))%10007);
return 0;
}