--正文

多重集合数 + 组合数取模

首先求出没有限制的选择方法C(n+m-1,m)

然后减掉至少有一个元素选择了k+1次的方法数,加上至少有两个元素选择了k+1次的方法数。。。以此类推

然后是组合数的计算

C(n,m) % p= (n! / (m! * (n-m)!)) % p

由乘法逆元的性质和费马小定理可以算出

C(n,m)  % p= n! * (m!*(n-m)!)^(p-2)

后面的幂次使用快速幂可以轻松算出

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <iostream>
using namespace std;
typedef long long LL;
#define MOD 1000000007
LL Fast_Mod(LL a,LL b){
LL res = ,base = a;
while (b){
if (b&) res = (res*base) % MOD;
base = (base*base) % MOD;
b = b >> ;
}
return res;
}
LL fac[],invfac[],n,m,k;
void Getfac(LL p){
fac[] = ;
int i;
for (i=;i<=p;i++){
fac[i] = (fac[i-]*i) % MOD;
}
invfac[p] = Fast_Mod(fac[p],MOD-);
for (i=p-;i>=;i--){
invfac[i] = (invfac[i+]*(i+)) % MOD;
}
}
LL Lucas(LL n,LL m){
if (n < m) return ;
return ((fac[n] % MOD)*(invfac[m] % MOD) % MOD) * (invfac[n-m] % MOD) % MOD;
}
int main(){
Getfac();
while(scanf("%lld %lld %lld",&n,&m,&k)!=EOF){
long long i;
long long res = Lucas(n+m-,m),sign = -;
for (i=;i<=n;i++,sign = -sign){
long long tmp = m - (k+)*i;
if (tmp < ) break;
res = (res % MOD + sign*Lucas(n,i)*Lucas(n+tmp-,tmp)) % MOD;
}
printf("%lld\n",(res+MOD) % MOD);
}
return ;
}

XidianOJ 1149 卡尔的技能 II的更多相关文章

  1. XidianOJ 1057 卡尔的技能

    题目描述 dota中的英雄卡尔的技能说明如下,他拥有3种不同的元素(冰,雷,火),每次他需要释放技能的时候,他要先选择3次元素来决定释放技能的类型(比如,他可以选择火+火+火或冰+雷+火等等),生成技 ...

  2. 用java开发dota英雄最华丽的技能

     爱java 爱dota,突发奇想想用java开发dota操作最华丽的英雄之一的卡尔的技能,因为本人系小白,代码不足的地方还请包涵,有同样爱好的同学欢迎一起研究学习. 先把我的代码呈上 import ...

  3. 单路CPU性能排名 更新于2015.10.6

    http://itianti.sinaapp.com/index.php/cpu 排名 处理器 图例 分数 1 Intel Xeon E5-2699 v3 @ 2.30GHz 22892 2 Inte ...

  4. 面对最菜TI战队,OpenAI在Dota2上输的毫无还手之力

    作者:Tony Peng 去年,OpenAI 的 1v1 AI 击败了世界顶尖选手 Dendi,OpenAI CTO Greg Brockman 承诺:明年,我们会带着 5v5 的 AI bot 重回 ...

  5. nba技能表

    球员名 主动技能名 主动技能效果 拆解技能名 拆解技能效果 巅峰-纳什 跑投三分 全队三分出手概率提高X%,但体力消耗增加Y% 稳固进攻 全队进攻增加X%,持续整场比赛 巅峰-科比 肉搏 对方全体行动 ...

  6. 《Genesis-3D开源游戏引擎--横版格斗游戏制作教程05:技能读表》

    5.技能读表 技能读表概述: 技能读表,作为实现技能系统更为快捷的一种方式,被广泛应用到游戏开发中.技能配表,作为桥梁连接着游戏策划者和开发者在技能实现上的关系.在游戏技能开发中,开发者只需要根据策划 ...

  7. UGUI之Image使用以及技能释放CD

    顾名思义:Image就是用来显示图片的 Image中Image组件中有一个重要的熟悉:Image type

  8. bzoj2616: SPOJ PERIODNI——笛卡尔树+DP

    不连续的处理很麻烦 导致序列DP又找不到优秀的子问题 自底向上考虑? 建立小根堆笛卡尔树 每个点的意义是:高度是(自己-father)的横着的极大矩形 子问题具有递归的优秀性质 f[i][j]i为根子 ...

  9. bzoj 2616 SPOJ PERIODNI——笛卡尔树+树形DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2616 把相同高度的连续一段合成一个位置(可能不需要?),用前缀和维护宽度. 然后每次找区间里 ...

随机推荐

  1. jquery weibo 留言

    <script> function getCnTime(s){ ); ))+'-'+toDou(oDate.getDate())+' '+toDou(oDate.getHours())+' ...

  2. android-8~23 View.java - dispatchTouchEvent源码

    android-8 /** * Pass the touch screen motion event down to the target view, or this * view if it is ...

  3. IIS7.0上传文件限制的解决方法

    在 Windows7(iis7.5).Win2008(iis 7.0)和Win2003(iis 6.0) 中,默认设置是特别严格和安全的,这样可以最大限度地减少因以前太宽松的超时和限制而造成的攻击. ...

  4. linux命令-ssh {远程登录}

    一 命令解释 命令: ssh ssh [-l login_name] [-p port] [user@]hostname

  5. Linux下的shell编程(三)BY 四喜三顺

    正则表达式:-------------------------------------------------------------------------------------------^   ...

  6. C++与零值比较

    1.布尔值与零值的比较 if(flag)//if为真 if(!flag)//if为假 其它都为不良风格: if (flag == TRUE) ) if (flag == FALSE) ) 2.整形值与 ...

  7. 根据不同分辨率加载不同 css 样芪表

    <script language=javascript> <!-- if (screen.width == 800) { document.write('<link rel=s ...

  8. 1.3 Makefile 工程管理

    1. 为什么得用Makefile 单步命令生成led.bin [root@cfm880 lesson1]# cd .. [root@cfm880 Part1]# mkdir lesson3 [root ...

  9. 修复HTTP 503错误

    要解决此问题,按照下列步骤操作: 1.验证是否已为虚拟服务器配置了应用程序池.默认的应用程序池是MSSharePointPortalAppPool. 请按照下列步骤来确定虚拟服务器正在使用的应用程序池 ...

  10. 微信连wifi

    微信连wifi 首先需要到微公众平台添加微信连wifi功能插件