码迷,mamicode.com
首页 > 其他好文 > 详细

NOIP 2011 提高组 计算系数

时间:2014-09-09 11:18:38      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   io   for   2014   div   

bubuko.com,布布扣

有二项式定理 `\left( a+b\right) ^{n}=\sum _{r=0}^{n}\left( \begin{matrix} n\\ r\end{matrix} \right) a^{n-r}b^{r}`。

组合数C(a,b)=C(a-1,b)+C(a-1,b-1)。

`n^2`递推即可。

然后快速幂计算`a^m`和`b^n`的值。

于是`C(k,n)*a^m*b^n`就是答案。

代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>

//by zrt
//problem:
using namespace std;
typedef long long LL;
const int inf(0x3f3f3f3f);
const double eps(1e-9);
LL a,b,k,n,m;
LL c[1005][1005];
LL pow(LL a,LL b){
    LL ret=1;
    while(b){
        if(b&1) ret=ret*a%10007;
        a=a*a%10007;
        b>>=1;
    }
    return ret;
}
int main(){
    #ifdef LOCAL
    freopen("in.txt","r",stdin);
    freopen("out.txt","w",stdout);
    #endif
    scanf("%lld%lld%lld%lld%lld",&a,&b,&k,&n,&m);
    c[0][0]=1;
    for(int i=1;i<=k;i++){
        c[i][0]=1;
        for(int j=1;j<=i;j++){
            c[i][j]=(c[i-1][j]+c[i-1][j-1])%10007;
        }
    }
    printf("%lld\n",pow(a%10007,n)*pow(b%10007,m)%10007*c[k][n]%10007);
    return 0;
}

NOIP 2011 提高组 计算系数

标签:style   blog   http   color   os   io   for   2014   div   

原文地址:http://www.cnblogs.com/zrts/p/noip2011jsxs.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!