您的位置:首页 > 其它

noip2011提高组——计算系数

2015-02-08 10:14 330 查看
这个题第一眼 杨辉三角。。其实还有个高大上的名字 叫。。二项式定理 我才高一QAQ 后面这个名字不知道啊

不过知道杨辉三角也够了

1 -> 1a^0*b^0

1 1 ->1a+1b

1 2 1 ->1a^2+2ab+1b^2

1 3 3 1 ->…………

…………

只不过这道题多了一个x与y项的系数

无所谓 用整体思想 将ax看成u by看成v

再用上面的公式套 (将举出的例子中的a,b 换成u,v)

表达出一个含有uv 的式子

在将uv 换成ax,by在乘方即可(好良心啊 这个居然不用快速幂)

数论什么的 再见吧 谁叫我数学学得烂


#include<iostream>
#include<cstdio>
#define MAXN 1000+10
#define LL long long
using namespace std;
LL aa[MAXN][MAXN];
LL a,b,k,n,m;
LL ans;
void ready()
{
for(int i=1;i<=k+1;i++)
{
for(int j=1;j<=i;j++)
{
if(j==1||i==j)
{
aa[i][j]=1;
continue;
}
aa[i][j]=(aa[i-1][j]+aa[i-1][j-1])%10007;
}
}
}
void readdata()
{
scanf("%lld%lld%lld%lld%lld\n",&a,&b,&k,&n,&m);
}

int main()
{
readdata();
ready();
int cja=1;
for(int i=1;i<=n;i++)
cja=(cja%10007)*(a%10007)%10007;
int cjb=1;
for(int i=1;i<=m;i++)
cjb=(cjb%10007)*(b%10007)%10007;
ans=(cjb*cja)%10007;
ans=(ans*aa[k+1][n+1])%10007;
printf("%d\n",ans);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: