Description

小Ho未来有一个为期N天的假期,他计划在假期中看A部电影,刷B道编程题。为了劳逸结合,他决定先拿出若干天看电影,再拿出若干天刷题,最后再留若干天看电影。(若干代指大于0)  每天要么看电影不刷题,要么刷题不看电影;不会既刷题又看电影。并且每天至少看一部电影,或者刷一道题。现在小Ho要安排每天看哪些电影/刷哪些题目,以及按什么顺序看电影/刷题目。注意A部电影两两不同并且B道题目也两两不同,请你计算小Ho一共有多少种不同的计划方案。由于结果可能非常大,你只需要输出答案对1000000009(大质数)取模的结果。只要某个事件(看电影或刷题)发生的日期不同或者在全部事件中的次序不同,就视为不同的方案。

Input

三个整数N, A和B。

对于30%的数据,N, A, B <= 10

对于60%的数据, 3 <= N <= 4000, 2 <= A <= 4000, 1 <= B <= 4000

对于100%的数据,3 <= N <= 100000, <= A <= 100000, 1 <= B <= 100000, A + B >= N

Output

一个整数表示答案。

Sample Input

4 2 2

Sample Output

4
解题思路:假设有i天看电影,则有n-i天刷题。把a部电影分到i(i∈[2,min(a,n-1)],因为至少要留一天刷题,所以i最大为min(a,n-1),最小为2)天看,每天至少一部的方案数为C(a-1,i-1)(考虑隔板法),又因为a部电影两两不同,因此i天看电影的方案数为a!*C(a-1,i-1);同理,把b道题分到n-i天刷,每天至少刷一题的方案数为C(b-1,n-i-1)(b>=n-i),又因为b道题两两不相同,因此n-i天刷题的方案数为b!*C(b-1,n-i-1);又因为i天看电影被分成前后两段,考虑隔板法,还有C(i-1,1)种。因此最终的公式为a!*b!*C(a-1,i-1)*C(b-1,n-i-1)*(i-1)%p。取模大质数-->费马小定理+乘法逆元。
AC代码:
 #include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL mod=1e9+;
const int maxn=;
int n,a,b;LL res,A[maxn]={};//0!=1
LL mod_power(LL x,LL y){//快速幂取模
LL ans=;x%=mod;
while(y){
if(y&)ans=ans*x%mod;
x=x*x%mod;
y>>=;
}
return ans;
}
int main(){
for(int i=;i<maxn;++i)//打印阶乘表
A[i]=A[i-]*i%mod;
while(cin>>n>>a>>b){
res=;
for(int i=;i<=min(a,n-);++i)
if(b>=n-i)res=(res+(A[a]*A[b]%mod*A[a-]%mod*A[b-]%mod*mod_power(A[i-]*A[a-i],mod-)%mod*mod_power(A[n-i-]*A[b-n+i],mod-)%mod*(i-)%mod))%mod;
cout<<res<<endl;
}
return ;
}

hihocoder #1698 假期计划 (排列组合+费马小定理+乘法逆元)的更多相关文章

  1. LightOJ 1419 – Necklace Polya计数+费马小定理求逆元

    题意:给你n个珠子可以染成k种颜色,旋转后相同的视为一种,问共有几种情况 思路:开始按照一般的排列组合做发现情况太多且要太多运算,查了下发现此题是组合中Polya定理模板题- 学的浅只能大致一说公式S ...

  2. light oj 1067 费马小定理求逆元

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1067 1067 - Combinations Given n differen ...

  3. 第十四届华中科技大学程序设计竞赛 B Beautiful Trees Cutting【组合数学/费马小定理求逆元/快速幂】

    链接:https://www.nowcoder.com/acm/contest/106/B 来源:牛客网 题目描述 It's universally acknowledged that there'r ...

  4. UVALive-3722 留个坑,为什么费马小定理求逆元不对??

    #include <iostream> #include <cstdlib> #include <queue> #include <algorithm> ...

  5. [CodeVs1515]跳(lucas定理+费马小定理)

    嘿嘿嘿好久没写数学题了,偶尔看到一道写一写... 题目大意:一个(n+1)*(m+1)[0<=n, m<=10^12,n*m<=10^12]的矩阵,C(0,0)=1,C(x,y)=C ...

  6. 题解 P4071 【[SDOI2016]排列计数】 (费马小定理求组合数 + 错排问题)

    luogu题目传送门! luogu博客通道! 这题要用到错排,先理解一下什么是错排: 问题:有一个数集A,里面有n个元素 a[i].求,如果将其打乱,有多少种方法使得所有第原来的i个数a[i]不在原来 ...

  7. 洛谷 - P1593 - 因子和 - 费马小定理

    类似的因为模数比较小的坑还有卢卡斯定理那道,也是有时候逆元会不存在,因为整除了.使用一些其他方法避免通过逆元. https://www.luogu.org/fe/problem/P1593 有坑.一定 ...

  8. 51nod A 魔法部落(逆元费马小定理)

    A 魔法部落 小Biu所在的部落是一个魔法部落,部落中一共有n+1个人,小Biu是魔法部落中最菜的,所以他的魔力值为1,魔法部落中n个人的魔法值都不相同,第一个人的魔法值是小Biu的3倍,第二个人的魔 ...

  9. hihoCoder#1698 : 假期计划 组合数

    题面:hihoCoder#1698 : 假期计划  组合数 题解: 题目要求是有序的排列,因此我们可以在一开始就乘上A!*B!然后在把这个序列划分成很多段. 这样的话由于乘了阶乘,所以所有排列我们都已 ...

随机推荐

  1. 2k进制数(codevs 1157)

    题目描述 Description 设r是个2k进制数,并满足以下条件: (1)r至少是个2位的2k进制数. (2)作为2k进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. (3)将r转换为 ...

  2. android framework navigationbar自定义

    需要实现的目标:在navigationbar上显示录像预览,并且点击按钮可以显示/隐藏NavigationBar 参考文章: http://blog.csdn.net/yanlai20/article ...

  3. [NOIP2005] 提高组 洛谷P1054 等价表达式

    题目描述 明明进了中学之后,学到了代数表达式.有一天,他碰到一个很麻烦的选择题.这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式,题目的要求是判断选项中哪些代数 ...

  4. codevs3728 联合权值

    题目描述 Description 输入描述 Input Description 输出描述 Output Description 样例输入 Sample Input 样例输出 Sample Output ...

  5. 静态区间第k大(划分树)

    POJ 2104为例[经典划分树问题] 思想: 利用快速排序思想, 建树时将区间内的值与区间中值相比,小于则放入左子树,大于则放入右子树,如果相等则放入左子树直到放满区间一半. 查询时,在建树过程中利 ...

  6. Google Protocol Buffer 的使用(一)

    一.什么是Google Protocol Buffer下面是官网给的解释:Protocol buffers are a language-neutral, platform-neutral exten ...

  7. Binary Tree Maximum Path Sum 自底向上求解(重重重重)

    题目: 链接 解答: 自底向上求解.left_max right_max分别返回了左右子树的最大路径和,假设左右子树最大路径和小于0.那么返回零. 用这个最大路径和和根节点的值相加.来更新最大值,同一 ...

  8. keepalived + lvs marster 与 backup 之间的 高可用

    简介 keepalived 是linux下一个轻量级的高可用解决方案,它与HACMP实现功能类似,都可以实现服务或者网络的高可用,但是又有差别:hacmp是一个专业的.功能完善的高可用软件,它提供了H ...

  9. .net Core使用Orcle官方驱动连接数据库 C#参考教程 http://www.csref.cn

    .net Core使用Orcle官方驱动连接数据库   最近在研究.net Core,因为公司的项目用到的都是Oracle数据库,所以简单试一下.net Core怎样连接Oracle. Oracle官 ...

  10. Java VS .NET:Java与.NET的特点对比 单点登录(SSO)的设计

    一.前言 为什么要写Java跟.NET对比? .NET出生之后就带着Java的影子.从模仿到创新,.NET平台也越来越成熟.他们不同的支持者也经常因为孰弱孰强的问题争论不休.但是本文并不是为了一分高下 ...