JZOJ-Day_1 B组-T1-计算系数

题目大意:

给定一个多项式 ( a x + b y ) k (ax + by)^k (ax+by)k,请求出多项式展开后 x n y m x^ny^m xnym 项的系数%10007的值。

解题思路:

二项式展开式 ( a + b ) n (a+b)^n (a+b)n展开式得第i+1项   ( i = 0.. n )   a n − i b i \ (i = 0 .. n)\ a^{n-i}b^i  (i=0..n) anibi前面的系数为 C n i C_{n}^{i} Cni
x n y m x^ny^m xnym前面的系数不算a和b时是 ( C k m ) (C_{k}^{m}) (Ckm)
x n y m x^ny^m xnym的系数为: a n b m   ∗   C k m a^nb^m\ *\ C_{k}^{m} anbm  Ckm
然后我们可以用快速幂或者直接搞 a n a^n an b m b^m bm, 毕竟 K   ≤   1000 K\ ≤\ 1000 K  1000
然后再杨辉三角递推求 C k m C_{k}^{m} Ckm

Accepted code:

#include<cstdio>
#include<iostream>
#define YMW 10007

using namespace std;

int a, b, k, n, m, y[1010][1010];

int power(int x, int b) {//快速幂 
	ll ans = 1; x %= YMW;
	while (b) {
		if (b & 1) (ans *= x) %= YMW;
		(x *= x) %= YMW;
		b /= 2;
	}
	return ans;
}

int main() {
	scanf("%d %d %d %d %d", &a, &b, &k, &n, &m);
	y[1][1] = 1;
	for (int i = 2; i <= k+5; ++i) 
		for (int j = 1; j <= i; ++j)
			y[i][j] = (y[i-1][j] + y[i-1][j-1]) % YMW;//杨辉三角
	printf("%lld\n", power(a, n)*power(b, m)%YMW*y[k+1][m+1]%YMW);
}
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值