当前位置: 首页 > news >正文

省选真题选做

[省选联考 2020 A 卷] 组合数问题

本题难点为下降幂的使用。

我们定义 \(n^{\underline{m}} = \prod\limits_{i=n-m+1}^{n} i\),其在组合数计算中具有重要的作用。下降幂的性质:\(a^{\underline{b}}=a^{\underline{c}} \times (a-c)^{\underline{b-c}}\)

同时我们定义下降幂多项式 \(g(k) = \prod\limits_{i=0}^{m} b_i k^{\underline{i}}\),考虑原多项式 \(f(k) = \prod\limits_{i=0}^{m} b_i k^i\),我们声称这两者之间可以进行转化,即普通多项式可以转成下降幂多项式,反之亦然。

考虑对于每个 \(b_i\) 计算结果,得到答案:

\[\sum\limits_{i=0}^{m} \sum\limits_{k=0}^{n} b_i k^{\underline{i}} \times x^k \times \dbinom{n}{k} \]

注意到 \(k^{\underline{i}} \times \dbinom{n}{k} = \dfrac{n^{\underline{k}} \times k^{\underline{i}}}{k^{\underline{k}}} = \dfrac{n^{\underline{k}}}{(k-i)^{\underline{k-i}}} = \dfrac{n^{\underline{i}} \times (n-i)^{\underline{k-i}}}{(k-i)^{\underline{k-i}}} = n^{\underline{i}} \times \dbinom{n-i}{k-i}\)。也就是说原式可以化为:

\[\sum\limits_{i=0}^{m} \sum\limits_{k=0}^{n} b_i \times x^k \times n^{\underline{i}} \times \dbinom{n-i}{k-i} \]

将一些常数项提出,得到:

\[\sum\limits_{i=0}^{m} b_i \times n^{\underline{i}} \times \sum\limits_{k=0}^{n} x^k \times \dbinom{n-i}{k-i} \]

显然,只有 \(k - i \geq 0\) 时组合数才能 \(> 0\),故我们枚举 \(l = k - i\),得:

\[\sum\limits_{i=0}^{m} b_i \times n^{\underline{i}} \times \sum\limits_{l=0}^{n-i} x^{l+i} \times \dbinom{n-i}{l} \]

继续化简:

\[\sum\limits_{i=0}^{m} b_i \times n^{\underline{i}} \times x^i \times \sum\limits_{l=0}^{n-i} x^{l} \times \dbinom{n-i}{l} \]

化简里面,发现本质上等于 \(\sum\limits_{l=0}^{n-i} \dbinom{n-i}{l} \times x^{l} \times 1^{n-i-l}\),化简得到 \((x+1)^{n-i}\),也就是说原式为:

\[\sum\limits_{i=0}^{m} b_i \times n^{\underline{i}} \times x^i \times (x+1)^{n-i} \]

于是问题落在了普通多项式转下降幂多项式上,这里我们引入第二类斯特林数 \(S(n,m)\) 表示将 \(n\) 个不同小球装进 \(k\) 个相同盒子,每个盒子非空的方案数。

根据定义,我们可以得知 \(S(0,0) = 1\)\(S(n,m) = S(n-1,m-1) + m \times S(n-1,m)\)。同时根据斯特林数的定义,我们可以得到式子:

\[x^{n} = \sum\limits_{i=0}^{n} S(n,i) \times x^{\underline{i}} \]

于是本题可以在 \(O(m^2)\) 时间内完成多项式的转换,至此我们在 \(O(m^2)\) 内完成本题。

#include<iostream>
#include<cstdio>
using namespace std;
long long n,x,p;
int m;
long long S[1010][1010];
long long a[1010],b[1010];
long long pow_mod(long long num1,long long num2){long long num3=1;while(num2){if(num2&1){num3=num3*num1%p;}num1=num1*num1%p;num2>>=1;}return num3;
}
int main(){scanf("%lld %lld %lld %d",&n,&x,&p,&m);S[0][0]=1;for(int i=1;i<=m;i++){for(int j=1;j<=i;j++){S[i][j]=(S[i-1][j-1]+S[i-1][j]*j%p)%p;}}for(int i=0;i<=m;i++){scanf("%lld",&a[i]);for(int j=0;j<=i;j++){b[j]+=a[i]*S[i][j]%p;b[j]%=p;}}long long ans=0,down_n=1;for(int i=0;i<=m;i++){ans+=b[i]*down_n%p*pow_mod(x,i)%p*pow_mod(x+1,n-i)%p;ans%=p;down_n=down_n*(n-i)%p;}printf("%lld",ans);return 0;
}
http://www.jsqmd.com/news/844720/

相关文章:

  • 从OJ题解到实战:自定义字符序下的多字符串比较策略
  • FunClip:当AI视频剪辑遇上大语言模型,传统工作流程的革命性变革
  • uniapp地图组件map+nvue实战:从标点聚合到交互优化全解析
  • 如何快速部署Royal TSX完整中文汉化:终极本地化解决方案
  • 收藏必备!小白程序员快速掌握大模型核心技能:Skill详解与实战
  • 7种字重完整解决方案:思源宋体CN终极中文排版指南
  • 别再只用Leaflet了!Mapbox GL JS加载本地MVT矢量瓦片保姆级教程(附避坑点)
  • 除了‘PIN TO PIN’,选AT32F403A替代STM32F103前必须搞懂的3个关键点
  • 从SES价签到ESP32墨水屏驱动板:自制低成本电子价签全记录
  • C# 二次开发读取DimXpert尺寸与误差
  • 饭松闹钟APP隐私策略
  • 对比直接使用厂商API体验Taotoken在模型切换与路由上的便利性
  • 双连通分量
  • AI智能体落地到垂直领域需要如何学习?
  • 告别动态IP:在CentOS Stream 9虚拟环境中精准配置静态网络地址
  • 2026无锡靠谱的注册公司代办机构口碑推荐 十大代理记账、执照代办、工商代办公司权威测评优选指南 - 品牌智鉴榜
  • 数字病理分析终极指南:如何使用QuPath快速实现精准生物图像分析
  • FFXIV TexTools深度解析:游戏模组制作框架的技术架构与实战应用
  • D2DX:终极暗黑破坏神2宽屏补丁,三步解锁60fps高清体验
  • 终极指南:使用d3dxSkinManage轻松管理你的游戏皮肤MOD
  • Beyond Compare 5终极激活指南:3分钟获取永久授权密钥
  • 昆明同城黄金回收测评,优选收的顶实体老店,交易透明无忧 - 奢侈品回收测评
  • 杭州4家优质宠物店深度实测,覆盖全人群需求,选宠不踩雷 - 范德萨的得到
  • OpenMV串口传图实战:从硬件选型到Python代码调试,一个视频监控原型就搞定了
  • RedisDesktopManager Windows版:5分钟掌握免费Redis数据库可视化工具
  • 2026去水印小程序哪个好用?好用的去水印小程序推荐排行榜 - 爱上科技热点
  • OpenHarmony 实战——从零构建本地开发环境与SDK深度定制
  • ThinkPad双风扇终极控制指南:如何用TPFanCtrl2实现静音与性能的完美平衡
  • 告别手动Limit!MybatisPlus 3.x分页最佳实践:Controller参数优化与Service层封装技巧
  • 2026年微动开关TOP5口碑优选服务商实测,「精信工业制品」深耕多年值得信赖 - 速递信息