(noip2011)计算系数

题目传送门sxazr
本题可用杨辉三角来做,也可以直接用组合数公式来求(要用费马小定理,时间快,空间占的少),我来说下杨辉三角的做法
先求出题目K次方的系数分f[k][i]
输出f[k][m]%MOD(注意是m)*a^n *b^m%MOD;
开long long 防炸也可不用
代码

#include <cstdio>
#include <iostream>
#define LL long long
using namespace std;
LL a,b,n,m,k,ans,f[1001][1001];
const LL MOD=1e4+7;
LL zr(LL x,LL y)
{
	LL tmp=1;
	while(y)
	{
		if(y%2) tmp=tmp*x%MOD;
		x=x*x%MOD;
		y/=2;
	}
	return tmp;
}
int main()
{
	cin>>a>>b>>k>>n>>m;
	f[1][0]=f[1][1]=1;
	for(int i=2;i<=k;i++){
		f[i][0]=1;
		for(int j=1;j<=i;j++)
		  f[i][j]=(f[i-1][j]+f[i-1][j-1])%MOD;
	}
	cout<<f[k][m]%MOD*zr(a,n)%MOD*zr(b,m)%MOD;//防炸
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值