求逆元 https://blog.csdn.net/baidu_35643793/article/details/75268911

int inv[N];

void init(){
inv[] = ;
for (int i = ; i < N; ++ i){
inv[i] = (mod - 1ll * (mod / i) * inv[mod % i] % mod) % mod;
}
}

组合递推

牛客暑期集训第六场C题解

对于A,M个取i个排列,如果我们要使A(M,i)->A(M,i+1)只需要A(M,i) * (M-i)

对于C,N个取i个组合,如果我们要使C(N-1,i-1)->C(N-1,i)只需要

    C(N-1,i-1) * (N-i)/i = C(N-1,i-1) * (N-i)*inv[i]%mod

#include <bits/stdc++.h>
#define MOD 998244353
#define MAXN 1000005
#define ll long long
using namespace std; int NY[MAXN];
void init() {
NY[]=;
for(int i=;i<MAXN;i++)
NY[i]=(MOD-1ll*(MOD/i)*NY[MOD%i]%MOD)%MOD;
} int main()
{
init();
int t; scanf("%d",&t);
for(int o=;o<=t;o++) {
ll n,m; scanf("%lld%lld",&n,&m);
ll A=m%MOD, C=;
ll ans=1ll*A%MOD;
for(ll i=;i<min(n,m);i++) {
A=1ll*(m-i)%MOD*A%MOD;
C=1ll*(n-i)%MOD*C%MOD*NY[i]%MOD;// C*((n-1)-(i-1))*NY[i]
ans=(ans+A*C%MOD)%MOD;
}
printf("Case #%d: %lld\n",o,ans);
} return ;
}

需要取模的组合数 预处理出所有

直接调用 C(a,b) 即可

#define mod 1000000007
#define LL long long
const int N=2e5+;
LL pow_mod(LL a, LL b) {
LL res = 1LL; a %= mod;
while(b){
if(b & ) res = res * a % mod;
a = a * a % mod;
b >>= ;
} return res;
}
LL inv(LL a) { return pow_mod(a, mod-); }
LL F[N], Finv[N];//F是阶乘,Finv是逆元的阶乘
void init() {
F[] = Finv[] = 1LL;
for(int i = ; i < N; i ++){
F[i] = F[i-] * 1LL * (LL)i % mod;
Finv[i] = Finv[i-] * 1LL * inv(i) % mod;
}
}
LL C(LL n, LL m) {
if(m < || m > n) return ;
return F[n] * 1LL * Finv[n - m] % mod * Finv[m] % mod;
}

隔板法 https://zhidao.baidu.com/question/1113648010040924539.html

隔板法就是把n个相同单元分配成m组。

这样n个单元中间有n-1个空格,分成m组需要m-1块隔板,

当必须分成m组 即各组不为空时,就是C(n-1,m-1)种方法

当至多分为m组 即有些组为空时,就是C(m+n-1,n-1)种方法

注意:隔板法的单元必须是相同的。

组合数的各种性质和定理

https://blog.csdn.net/litble/article/details/75913032

1.

2.   

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

逆元 组合A(n,m) C(n,m)递推 隔板法的更多相关文章

  1. 【bzoj 2339】[HNOI2011]卡农(数论--排列组合+逆元+递推)

    题意:从编号为 1~N 的音阶中可选任意个数组成一个音乐片段,再集合组成音乐篇章.要求一个音乐篇章中的片段不可重复,都不为空,且出现的音符的次数都是偶数个.问组成 M 个片段的音乐篇章有多少种.答案取 ...

  2. CF451E Devu and Flowers (隔板法 容斥原理 Lucas定理 求逆元)

    Codeforces Round #258 (Div. 2) Devu and Flowers E. Devu and Flowers time limit per test 4 seconds me ...

  3. AGC001E BBQ Hard 组合、递推

    传送门 题意:给出长度为$N$的两个正整数序列$A_i,B_i$,求$\sum\limits_{i=1}^N \sum\limits_{j=i+1}^N C_{A_i+A_j+B_i+B_j}^{A_ ...

  4. 求逆元的两种方法+求逆元的O(n)递推算法

    到国庆假期都是复习阶段..所以把一些东西整理重温一下. gcd(a,p)=1,ax≡1(%p),则x为a的逆元.注意前提:gcd(a,p)=1; 方法一:拓展欧几里得 gcd(a,p)=1,ax≡1( ...

  5. 2825 codevs危险的组合(递推)

    2825 危险的组合 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond 题目描述 Description 有一些装有铀(用U表示)和铅(用L表示)的盒子,数量均足够 ...

  6. hdu6397 Character Encoding 隔板法+容斥原理+线性逆元方程

    题目传送门 题意:给出n,m,k,用m个0到n-1的数字凑出k,问方案数,mod一个值. 题目思路: 首先如果去掉数字范围的限制,那么就是隔板法,先复习一下隔板法. ①k个相同的小球放入m个不同的盒子 ...

  7. Crash的游戏 [组合+递推]

    题面 思路 问题转化 这个问题的核心在于,我们需要把"加入一个球.拿出一个球"这两个操作转化一下 因为显然两个操作同时进行的话,我们没有办法从单纯的组合意义去分析 我们首先把$m$ ...

  8. ACM学习历程—SNNUOJ 1116 A Simple Problem(递推 && 逆元 && 组合数学 && 快速幂)(2015陕西省大学生程序设计竞赛K题)

    Description Assuming a finite – radius “ball” which is on an N dimension is cut with a “knife” of N- ...

  9. P1759 通天之潜水(不详细,勿看)(动态规划递推,组合背包,洛谷)

    题目链接:点击进入 题目分析: 简单的组合背包模板题,但是递推的同时要刷新这种情况使用了哪些物品 ac代码: #include<bits/stdc++.h> using namespace ...

随机推荐

  1. Executor ExecutorService Executors

    Executor public interface Executor { void execute(Runnable command); } ExecutorService ExecutorServi ...

  2. C++ 短信验证码/通知 - 代码示例

    //接口类型:互亿无线触发短信接口,支持发送验证码短信.订单通知短信等. // ///////////////////账户注册:请通过该地址开通账户http://user.ihuyi.com/regi ...

  3. Yii2配置

    最外层:配置文件,params Yii2导航 <?php NavBar::begin([ 'brandLabel' => '大海', 'brandUrl' => Yii::$app- ...

  4. thinkphp 模块部署

    3.2对模块的访问是自动判断的,所以通常情况下无需配置模块列表即可访问,在部署模块的时候,默认情况下都是基于类似于子目录的URL方式来访问模块的,例如: http://serverName/Home/ ...

  5. macOs下全局安装npm包的设置问题

    在命令行中创建一个文件.npm-global,把这个文件作为全局安装的文件夹 mkdir ~/.npm-global 设置路劲 npm config set prefix '~/.npm-global ...

  6. NX二次开发-UFUN获取工程图视图边界线颜色UF_DRAW_ask_border_color

    #include <uf.h> #include <uf_draw.h> #include <uf_ui.h> UF_initialize(); ; UF_DRAW ...

  7. NX二次开发-算法篇-找相切面

    方法1:通过判断相邻面公共边的光顺性来找相切面 1 #include <uf.h> 2 #include <uf_modl.h> 3 #include <uf_obj.h ...

  8. NX二次开发-对话框加锁UF_UI_lock_ug_access

    VC/MFC调用UG Dialog要进入加锁状态 加锁 UF_UI_lock_ug_access ( UF_UI_FROM_CUSTOM ); 此处为UF_UI_select的函数 解锁 UF_UI_ ...

  9. NXOpenC#_Training_blockstyler(cn)【转载】

  10. JAVA IntelliJ IDEA for mac/jdk的安装及环境配置、运行

    现在配置完之后再回头看看,其实挺简单, 但我还是弄了好几个小时才配置出来, 不过好在是自己配置出来的, 每天都在慢慢进步. 安装及配置步骤如下: JAVA的IDE的话去jetbrains的官网上对应下 ...