AcWing 1309. 车的放置 (加法原理、乘法原理、组合数排列数的求法、乘法逆元)
1309. 车的放置
- 分步做:先放上面的矩形,后考虑下面的矩形。
- 分类做:依次求出,上面放置 0 、 1 、 2 、 … … 、 k 0、1、2、……、k 0、1、2、……、k个车的,而下面放置 k 、 k − 1 、 k − 2 、 … … 、 0 k、k-1、k-2、……、0 k、k−1、k−2、……、0的方案数,分别累计到答案里。
- 核心:加入上面放 i i i个、下面就放置 k − i k-i k−i个,那么此时方案数为
C b i ∗ P a i ∗ C d k − i ∗ P a + c − i k − i C_{b}^{i}*P_{a}^{i}*C_{d}^{k-i}*P_{a+c-i}^{k-i} Cbi∗Pai∗Cdk−i∗Pa+c−ik−i
在具体求组合数、排列数的时候,由于要求的模数是个质数,可以通过阶乘公式和乘法逆元( a − 1 ≡ a p − 2 ( m o d p ) a^{-1}\equiv a^{p-2} (\mod p) a−1≡ap−2(modp))得出。
#include <stdio.h>
using namespace std;typedef long long ll;
const int mod = 100003, N = 2010;
ll fact[N],infact[N];ll qp(ll a,ll b){ll res = 1;while(b){if(b&1) res = (res*a)%mod;a = a*a%mod;b >>= 1;}return res;
}ll P(ll a,ll b){if(a<b) return 0;return fact[a]*infact[a-b]%mod;
}ll C(ll a,ll b){if(a<b) return 0;return P(a,b)*infact[b]%mod;
}int a,b,c,d,k;int main(){scanf("%d%d%d%d%d",&a,&b,&c,&d,&k);fact[0] = infact[0] = 1;for(int i=1;i<N;i++){fact[i] = fact[i-1]*i%mod;infact[i] = qp(fact[i],mod-2)%mod; // infact[i] = infact[i-1]*qp(i,mod-2)%mod; 也是可行的}ll ans = 0;for(int i=0;i<=k;i++){ans = (ans+C(b,i)*P(a,i)%mod*C(d,k-i)*P(a+c-i,k-i))%mod;}printf("%d\n",ans);return 0;
}
AcWing 1309. 车的放置 (加法原理、乘法原理、组合数排列数的求法、乘法逆元)相关推荐
- 组合计数——车的放置(逆元)+数三角形+序列统计(lucas定理)
通用传送门:https://www.acwing.com/activity/content/16/ 思路:设C(a,b)为从a中取出b个的组合数,设A(a,b)从a中选出b个进行排列的排列数. 对于题 ...
- 排列数与组合数~~~~
先说两句废话 咳咳 今天突突突突突突突发奇想想写篇文章(?很神奇 然后开始翻笔记本 看看这个--水的失去浓度 看看这个--哎呀,学了,没会,也不出来 害,咋整... 偶然间,发现了一个对大家来说都很简 ...
- 加法乘法原理、排列组合、线性规划
[排列组合] 1.加法原理与乘法原理 加法原理:分类思想.一个事件的发生,分为几类事件的发生,通俗的说是好几种情况的发生. 乘法原理:分步思想.一个事件的发生,分为几个子事件分步发生. 这里要注意:( ...
- (组合数求模=乘法逆元+快速幂) Problem Makes Problem
题目: As I am fond of making easier problems, I discovered a problem. Actually, the problem is 'how ca ...
- 【组合数学】指数生成函数 ( 指数生成函数概念 | 排列数指数生成函数 = 组合数普通生成函数 | 指数生成函数示例 )
文章目录 一.指数生成函数 二.排列数指数生成函数 = 组合数普通生成函数 三.指数生成函数示例 参考博客 : 按照顺序看 [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常 ...
- 总结组合数的几种求法(模板)
目录 way1.打表C(n,m) way2. 阶乘无模 way3.乘法逆元+快速幂+阶乘 way4.Lucas定理 way1.打表C(n,m) 原理: 杨辉三角 \(\sum_{i=m}^{n}C_{ ...
- python计算排列数 组合数
组合排列介绍 一.编写函数计算组合数CniC^{i}_{n}Cni. def Combinatorial(n,i):'''设计组合数'''#n>=iMin=min(i,n-i)result=1 ...
- 排列数 A(n, m) 与组合数 C(n, m) 的求法
一.什么是排列,什么是组合? 排列 从 n 个不同元素中,任取 m(m≤n) 个元素,按照一定的顺序排成一列,叫做从 n 个不同元素中取出 m 个元素的一个排列. 组合 从 n 个不同元素中,任取 m ...
- 多重集的排列数与组合数
多重集的排列数与组合数 设 S = { n 1 a 1 , n 2 a 2 , - , n k a k } S = \{ n_1a_1,n_2a_2,-,n_ka_k\} S={n1a1,n2a ...
最新文章
- 就很突然,电脑里多出了一个文件......
- Inside Linux kernel
- iis7.5php.2,Windows2008 IIS7.5搭建PHP5.2
- Session与Cookie的安全问题
- java 系统音量案例_android 实现手机音量的控制 实例源码
- php自动加载指定目录下的类文件
- 排序 之 快排、归并、插入 - 时间复杂度----掌握思想和过程
- “假冒hao123”“北大青鸟”被黑 钓鱼挂马两不误
- 在开发过程中调试报表插件详细教程
- Python抓取打印机硒鼓和组件剩余量的爬虫
- 两个EXCEL对比是完全否相同
- 配置静态路由使用下一跳IP地址和使用出接口的区别
- 成都理工大学计算机考研资料汇总
- JasperReport:数据填充和多种类别报表
- 三行代码做一辆Q弹物理自行车,骑上它去海边兜风吧!
- Taro 与 React 的差异(Taro的约束(keng))
- 中国剩余定理求解同余线性方程组(模数互素和非互素的情况)
- The color “baseBlac in values has no declaration in the base values folder this can lead to crash
- git工具的使用 、gitlab 服务器的搭建、Jenkins服务的搭建
- 阻尼效果总结(顶部图片放大效果)
热门文章
- 尚品汇_第3章_平台属性管理
- TiDB3.0.1与3.0.2版本的TiKV宕机对比测试
- 吃球球C++ 配合easyX
- 【Alpha】阶段第六次Scrum Meeting
- 多语言多用户商城系统 中英文电商系统困境及解决思路
- ofo 共享单车的问题
- 四针角oled屏连接arduino_ESP8266连接OLED显示屏并显示位图图像
- matlab打开mp4视频时报错,关于MATLAB提取MP4视频帧时候,跨帧取速度会慢
- chp01-02安装jupyte lab
- 现代版《满城尽带黄金甲》惊现网上!