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. 车的放置 (加法原理、乘法原理、组合数排列数的求法、乘法逆元)相关推荐

  1. 组合计数——车的放置(逆元)+数三角形+序列统计(lucas定理)

    通用传送门:https://www.acwing.com/activity/content/16/ 思路:设C(a,b)为从a中取出b个的组合数,设A(a,b)从a中选出b个进行排列的排列数. 对于题 ...

  2. 排列数与组合数~~~~

    先说两句废话 咳咳 今天突突突突突突突发奇想想写篇文章(?很神奇 然后开始翻笔记本 看看这个--水的失去浓度 看看这个--哎呀,学了,没会,也不出来 害,咋整... 偶然间,发现了一个对大家来说都很简 ...

  3. 加法乘法原理、排列组合、线性规划

    [排列组合] 1.加法原理与乘法原理 加法原理:分类思想.一个事件的发生,分为几类事件的发生,通俗的说是好几种情况的发生. 乘法原理:分步思想.一个事件的发生,分为几个子事件分步发生. 这里要注意:( ...

  4. (组合数求模=乘法逆元+快速幂) Problem Makes Problem

    题目: As I am fond of making easier problems, I discovered a problem. Actually, the problem is 'how ca ...

  5. 【组合数学】指数生成函数 ( 指数生成函数概念 | 排列数指数生成函数 = 组合数普通生成函数 | 指数生成函数示例 )

    文章目录 一.指数生成函数 二.排列数指数生成函数 = 组合数普通生成函数 三.指数生成函数示例 参考博客 : 按照顺序看 [组合数学]生成函数 简要介绍 ( 生成函数定义 | 牛顿二项式系数 | 常 ...

  6. 总结组合数的几种求法(模板)

    目录 way1.打表C(n,m) way2. 阶乘无模 way3.乘法逆元+快速幂+阶乘 way4.Lucas定理 way1.打表C(n,m) 原理: 杨辉三角 \(\sum_{i=m}^{n}C_{ ...

  7. python计算排列数 组合数

    组合排列介绍 一.编写函数计算组合数CniC^{i}_{n}Cni​. def Combinatorial(n,i):'''设计组合数'''#n>=iMin=min(i,n-i)result=1 ...

  8. 排列数 A(n, m) 与组合数 C(n, m) 的求法

    一.什么是排列,什么是组合? 排列 从 n 个不同元素中,任取 m(m≤n) 个元素,按照一定的顺序排成一列,叫做从 n 个不同元素中取出 m 个元素的一个排列. 组合 从 n 个不同元素中,任取 m ...

  9. 多重集的排列数与组合数

    多重集的排列数与组合数 设 S = { n 1 a 1 , n 2 a 2 , - , n k a k } S = \{ n_1a_1,n_2a_2,-,n_ka_k\} S={n1​a1​,n2​a ...

最新文章

  1. 就很突然,电脑里多出了一个文件......
  2. Inside Linux kernel
  3. iis7.5php.2,Windows2008 IIS7.5搭建PHP5.2
  4. Session与Cookie的安全问题
  5. java 系统音量案例_android 实现手机音量的控制 实例源码
  6. php自动加载指定目录下的类文件
  7. 排序 之 快排、归并、插入 - 时间复杂度----掌握思想和过程
  8. “假冒hao123”“北大青鸟”被黑 钓鱼挂马两不误
  9. 在开发过程中调试报表插件详细教程
  10. Python抓取打印机硒鼓和组件剩余量的爬虫
  11. 两个EXCEL对比是完全否相同
  12. 配置静态路由使用下一跳IP地址和使用出接口的区别
  13. 成都理工大学计算机考研资料汇总
  14. JasperReport:数据填充和多种类别报表
  15. 三行代码做一辆Q弹物理自行车,骑上它去海边兜风吧!
  16. Taro 与 React 的差异(Taro的约束(keng))
  17. 中国剩余定理求解同余线性方程组(模数互素和非互素的情况)
  18. The color “baseBlac in values has no declaration in the base values folder this can lead to crash
  19. git工具的使用 、gitlab 服务器的搭建、Jenkins服务的搭建
  20. 阻尼效果总结(顶部图片放大效果)

热门文章

  1. 尚品汇_第3章_平台属性管理
  2. TiDB3.0.1与3.0.2版本的TiKV宕机对比测试
  3. 吃球球C++ 配合easyX
  4. 【Alpha】阶段第六次Scrum Meeting
  5. 多语言多用户商城系统 中英文电商系统困境及解决思路
  6. ofo 共享单车的问题
  7. 四针角oled屏连接arduino_ESP8266连接OLED显示屏并显示位图图像
  8. matlab打开mp4视频时报错,关于MATLAB提取MP4视频帧时候,跨帧取速度会慢
  9. chp01-02安装jupyte lab
  10. 现代版《满城尽带黄金甲》惊现网上!