错排公式 + 组合数学取mod板子
来源:互联网 发布:vmware for ubuntu 64 编辑:程序博客网 时间:2024/05/29 14:27
不带解释版的
define ll long long intll D[maxn],fac[maxn],inv[maxn];void init(){ D[0] = 1; D[1] = 0; D[2] = 1; for(ll i=3;i<=maxn;i++){ D[i] = (i-1)*(D[i-1]+D[i-2]) % mod; } fac[0] = 1; for(ll i=1;i<maxn;i++) fac[i] = (fac[i-1]*i) % mod; inv[maxn-1] = qpow(fac[maxn-1],mod-2); for(ll i=maxn-2;i>=0;i--) inv[i] = (inv[i+1]*(i+1) % mod);}ll C(int n,int m){ return fac[n] * inv[m] % mod * inv[n-m] % mod;}
带解释版的
define ll long long intll D[maxn],fac[maxn],inv[maxn];//D是错排公式,fac是阶乘数组,inv是对应阶乘的逆元.void init(){ //D[0]初始化为0或1要看题. D[0] = 1; D[1] = 0; D[2] = 1; for(ll i=3;i<=maxn;i++){ D[i] = (i-1)*(D[i-1]+D[i-2]) % mod; } fac[0] = 1; for(ll i=1;i<maxn;i++) fac[i] = (fac[i-1]*i) % mod; inv[maxn-1] = qpow(fac[maxn-1],mod-2);//先求一个最大数的逆元. for(ll i=maxn-2;i>=0;i--){ //然后根据地推关系进行一波递推. inv[i] = (inv[i+1]*(i+1) % mod);//初始化每一个阶乘对应 //的逆元. 这个看不太懂就把它写出来就行了. a*a的逆元==1,这样做可 //以把每一个阶乘的逆元给预处理出来. }}ll C(int n,int m){ return fac[n] * inv[m] % mod * inv[n-m] % mod;}
阅读全文
0 0
- 错排公式 + 组合数学取mod板子
- QDU 礼尚往来(组合数学之错排公式)
- 【DBSDFZOJ 4445】棋盘(组合数学-错排公式+高精度)
- codeforces 893E(组合数学&组合数取mod)
- hdu 6036 NTT取模(板子)+组合数学
- 组合数学--错排问题
- BZOJ 4517|SDOI 2016|排列计数|错排公式|组合数学
- [日常] 错排公式+组合数
- 编程优化数学组合排列公式取模实现
- hdoj2068RPG的错排【错排公式+组合数】
- 算法之错排公式 错排(加组合)
- hdoj RPG的错排 2068 (数学&错排公式)
- 错排问题(组合数学)
- NYOJ 451 组合数学 错排
- FZU2282Wand (组合数学+错排应用)
- 组合数学-错排问题(转)
- 组合数学:B - RPG的错排(错排)
- HDU 2068 RPG的错排(组合数学--错排)
- PAT a1094题解
- 计蒜之道2017F-腾讯消消乐(状压dp)
- 基于Zookeeper的路由和负载均衡实现思想
- Java系列(二)之面向对象
- PAT a1095题解
- 错排公式 + 组合数学取mod板子
- ffmpeg编译 | 在苹果设备上玩转多媒体的第一步
- 社区club-web的那2个小项目(PC端和移动端)-vue架构梳理
- 1.odoo环境搭建
- PAT a1096题解
- 晓光笔记—android简介
- 精通Excel数据统计与分析
- PAT a1097题解
- Linux环境下破解用户密码