【ybtoj 高效进阶 6.4】 【组合数学】 计算系数
题目
解题思路
如果单纯只看(x+y)k xnym的系数是
c
k
m
c_{k}^{m}
ckm 由杨辉三角可得,xky0,xk-1y1…x0yk
再看(ax+by)k还要算上他们本来的系数a,b,所以最终系数为
c
k
m
c_{k}^{m}
ckm * an * bm
代码
#include<iostream>
#include<cstdio>
using namespace std;
const int mo=10007;
int a,b,k,n,m;
int power(long long a,int n)
{
long long ans=1;
while (n)
{
if (n&1) ans=(ans*a)%mo;
a=(a*a)%mo;
n/=2;
}
return ans;
}
int zh(int x,int y)
{
long long ans=1,sum=1;
for (int i=1;i<=y;i++)
{
ans=(ans*(x-i+1))%mo;
sum=(sum*i)%mo;
}
long long ny=power(sum,mo-2);
return ans*ny%mo;
}
int main()
{
scanf("%d%d%d%d%d",&a,&b,&k,&n,&m);
int c=zh(k,m),x=power(a,n),y=power(b,m);
c=c*x%mo*y%mo;
printf("%d",c);
return 0;
}