游客 Signup | Login
中文 | En

3390 - 计算系数

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

Input

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

Output

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

Examples

Input

1 1 3 1 2

Output

3

Hint

【数据范围】 
对于 30%的数据,有 0≤k≤10; 
对于 50%的数据,有 a = 1,b = 1; 

<span style="font-family:serif;font-size:15.555556297302246px;line-height:20px;background-color:#FFFFFF;">对于 100%的数据,有 0≤k≤1,000,0≤n, m≤k,且 n + m = k,0≤a,b≤1,000,000。</span>

<span style="font-family:serif;font-size:15.555556297302246px;line-height:20px;background-color:#FFFFFF;"><br />

<span style="font-family:serif;font-size:15.555556297302246px;line-height:20px;background-color:#FFFFFF;"><strong>上传者:吕红波</strong></span>

Solution C++

//AUTHOR::STDAFX
//ALGORITHM::Math
 
#define Mod 10007L
 
#include <cstdio>
 
using namespace std;
 
typedef long long ll;
 
int a,b,k,n,m;
ll c[1010][1010];
 
ll fx(ll a,int b)
{
    ll ans=1;
    a%=Mod;
    while(b>0){
        if(b&1){
            ans=(ans*a)%Mod;
        }
        b>>=1;
        a=(a*a)%Mod;
    }
    return ans%Mod;
}
int main(){
    scanf("%d%d%d%d%d",&a,&b,&k,&n,&m);
    a%=Mod;b%=Mod;
    c[1][1]=c[1][2]=1;
    for(int i=2;i<=k;i++){
        c[i][1]=1;
        for(int j=2;j<=m+1;j++){
            c[i][j]=(c[i-1][j]+c[i-1][j-1])%Mod;
        }
    }
    c[k][m+1]*=fx(a,n);
    c[k][m+1]%=Mod;
    c[k][m+1]*=fx(b,m);
    c[k][m+1]%=Mod;
    printf("%d",c[k][m+1]);
    //fclose(stdin);
    //fclose(stdout);
    return 0;
}

Hint

【数据范围】 
对于 30%的数据,有 0≤k≤10; 
对于 50%的数据,有 a = 1,b = 1; 

<span style="font-family:serif;font-size:15.555556297302246px;line-height:20px;background-color:#FFFFFF;">对于 100%的数据,有 0≤k≤1,000,0≤n, m≤k,且 n + m = k,0≤a,b≤1,000,000。</span>

<span style="font-family:serif;font-size:15.555556297302246px;line-height:20px;background-color:#FFFFFF;"><br />

<span style="font-family:serif;font-size:15.555556297302246px;line-height:20px;background-color:#FFFFFF;"><strong>上传者:吕红波</strong></span>

Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题