【AcWing】蓝桥杯集训每日一题Day28|组合计数|二项式定理|杨辉三角|211.计算系数(C++)

devtools/2024/9/23 19:12:47/
211.计算系数
211. 计算系数 - AcWing题库
难度:简单
时/空限制:1s / 64MB
总通过数:3703
总尝试数:7790
来源:

《算法竞赛进阶指南》NOIP2011提高组
算法标签

二项式定理组合计数

题目内容

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

输入格式

共一行,包含 5 个整数,分别为 a,b,k,n,m,每两个整数之间用一个空格隔开。

输出格式

输出共 1 行,包含一个整数,表示所求的系数,这个系数可能很大,输出对 10007 取模后的结果。

数据范围

0≤n,m≤k≤1000,
n+m=k,
0≤a,b≤10^6

输入样例:
1 1 3 1 2 
输出样例:
3
题目解析

由于是齐次多项式,所以n+m一定等于k
系数可能很大,要模上10007

a和b是在100万以内
k在1000以内

多项式展开可以用二项式定理

( a + b ) n = ∑ r = 0 n C n r a n − r b r (a + b)^{n}=\sum_{r=0}^nC_{n}^ra^{n-r}b^r (a+b)n=r=0nCnranrbr

证明

( a x + b y ) n = ∑ k = 0 n C n k ( a x ) k ( b y ) n − k (ax+by)^n=\sum_{k=0}^nC_{n}^k(ax)^k(by)^{n-k} (ax+by)n=k=0nCnk(ax)k(by)nk
一共是n个ax+by相乘,每一项里面不是取x这一项就是取y这一项
x的系数如果是k的话,说明有其中的k组取的是x这一项,剩下的n-k组取的是y这一项
总共有n组,从中挑出来k组取x这一项,所以一共有 C n k C_{n}^k Cnk种取法

可以发现其中的 x n y m x^ny^m xnym这一项,对应的系数就是 C k n a n b m C_{k}^na^nb^m Cknanbm

如何求组合数,看数据范围
k只有1000
可以用递推的方式来求

杨辉三角

C a b = C a − 1 b − 1 + C a − 1 b C_{a}^b=C_{a-1}^{b-1}+C_{a-1}^b Cab=Ca1b1+Ca1b

证明

从a个数中,选择b个数
可以将所有选法分成两大类
比如挑第一个元素,所有包含第一个元素的方法是一类,所有不包含第一个元素的方法是另一类

如果包含第一个元素的话,就是要从剩下的a-1个元素中选b-1个元素
如果不包含第一个元素的话,就是从剩余的a-1个元素中选b个元素

因为n和m都在1000以内
所以不需要用快速幂

代码
#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 1010, MOD = 10007;//定义一个组合数递推数组
int C[N][N];int main()
{int a, b, k, n, m;cin >> a >> b >> k >> n >> m;a %= MOD, b %= MOD; //取模,防止爆//先递推求一下组合数,有模板885题for (int i = 0; i <= k; i ++)for (int j = 0; j <= i; j ++)//如果上面的数是0,方案数是1if (!j) C[i][j] = 1;else C[i][j] = (C[i - 1][j - 1] + C[i - 1][j]) % MOD;int res = C[k][n];//接下来乘n个a和m个bfor (int i = 0; i < n; i ++) res = res * a % MOD;for (int i = 0; i < m; i ++) res = res * b % MOD;cout << res << endl;return 0;
}

http://www.ppmy.cn/devtools/5533.html

相关文章

HTML段落标签、换行标签、文本格式化标签与水平线标签

目录 HTML段落标签 HTML换行标签 HTML格式化标签 加粗标签 倾斜标签 删除线标签 下划线标签 HTML水平线标签 HTML段落标签 在网页中&#xff0c;要把文字有条理地显示出来&#xff0c;就需要将这些文字分段显示。在 HTML 标签中&#xff0c;<p>标签用于定义段落…

【QT教程】QT6与Python

QT6与Python 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C扩展开发视频课程 免费QT视频课程 您可以看免费1000个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费看 免费QT视…

将闲置的windows硬盘通过smb共享的方式提供给mac作为时间机器备份

1.windows端&#xff0c;开启smb共享 自行解决 2.mac端 磁盘工具-文件-新建映像-空白映像 假设你的名字为&#xff1a;backup 大小&#xff1a;350GB&#xff08;自己修改&#xff09; 格式&#xff1a;MacOS扩展&#xff08;日志式&#xff09; 分区&#xff1a;单个分区-A…

设计模式:代理模式

文章目录 一、什么是代理模式二、代理模式的结构1、介绍2、代码实现样例&#xff08;1&#xff09;静态代理&#xff08;2&#xff09;动态代理 三、代理模式的应用场景 一、什么是代理模式 为某一个对象提供一个代理或占位符&#xff0c;并由代理对象来控制对原对象的访问。 …

一步一步学习使用 MediaSource 实现动态媒体流

学习前的参考 为什么视频网站的视频链接地址是blob&#xff1f; - 掘金 MediaSource - Web API 接口参考 | MDN 在示例中前往下载源代码&#xff1a; netfix/demo/bufferWhenNeeded.html at gh-pages nickdesaulniers/netfix GitHub 下载 demo 目录&#xff0c;对 bufferW…

Spring+SpringMVC的知识总结

一:技术体系架构二:SpringFramework介绍三:Spring loC容器和核心概念3.1 组件和组件管理的概念3.1.1什么是组件:3.1.2:我们的期待3.1.3Spring充当组件管理角色(IOC)3.1.4 Spring优势3.2 Spring Ioc容器和容器实现3.2.1普通和复杂容器3.2.2 SpringIOC的容器介绍3.2.3 Spring IOC…

MySQL常见故障现象分析及解决办法

一、背景 MySQL作为广泛使用的关系型数据库管理系统&#xff0c;在日常使用中难免会遇到各种故障。本文将通过一个具体的案例&#xff0c;分析MySQL常见的故障现象&#xff0c;并提供相应的解决办法和代码示例。 二、故障现象 某企业使用的MySQL数据库服务器近期出现以下问题…

GPT-3.5和GPT-Plus的区别

GPT-3.5和GPT-Plus都是OpenAI开发的大型语言模型,但它们之间有一些区别: GPT-3.5就是大家熟知的ChatGPT GPT-Plus 是Open AI 的更强的AI模型GPT-4版本。两者区别是&#xff1a; 模型规模:GPT-Plus是GPT-3的一个更大版本,参数量更多。而GPT-3.5是GPT-3的一个优化版本,在参数量…