hdu6114Chess(组合数取余,逆元)
来源:互联网 发布:郑州大学软件技术学院 编辑:程序博客网 时间:2024/06/07 11:40
题意:
照着题目模拟一变,知道是求组合数,但是要取余。
思路:
需要用到逆元知识。从一个漂亮的学姐那抄了一份模板。
代码:
#include <iostream>using namespace std;typedef long long ll;const ll MOD = 1e9 + 7; // 必须为质数才管用const ll MAXN = 1e5 + 3;int N, M;ll fac[MAXN]; // 阶乘ll inv[MAXN]; // 阶乘的逆元ll QPow(ll x, ll n){ ll ret = 1; ll tmp = x % MOD; while (n) { if (n & 1) { ret = (ret * tmp) % MOD; } tmp = tmp * tmp % MOD; n >>= 1; } return ret;}void init(){ fac[0] = 1; for (int i = 1; i < MAXN; i++) { fac[i] = fac[i - 1] * i % MOD; } inv[MAXN - 1] = QPow(fac[MAXN - 1], MOD - 2); for (int i = MAXN - 2; i >= 0; i--) { inv[i] = inv[i + 1] * (i + 1) % MOD; }}ll C(ll a, ll b){ if (b > a) { return 0; } if (b == 0) { return 1; } return fac[a] * inv[b] % MOD * inv[a - b] % MOD;}int main(int argc, const char * argv[]){ init(); int T; cin >> T; while (T--) { cin >> N >> M; if (N == M) { cout << 1 << '\n'; } else { cout << C(max(N, M),min(N, M)) << '\n'; } } return 0;}
阅读全文
0 0
- hdu6114Chess(组合数取余,逆元)
- hdu4869(逆元+求组合数)
- hdu5651(乘法逆元&&组合数)
- 组合数取模(逆元+快速幂)
- FZU - 2020 组合(逆元+卢卡斯)
- bzoj1004(组合+乘法逆元)(简便)
- Chess(组合数,逆元)
- fzu2015vote 组合 逆元
- fzu2020 组合,逆元
- 组合数、逆元,数学
- FZU2282-组合数-逆元
- 组合数取模之逆元
- Lucas定理+乘法逆元+组合数学(hdu5226)
- ssoj1306卡农(canon)(组合数学+乘法逆元)
- ssoj2431 棋盘路径(乘法逆元+组合数)
- Codeforces 521C 组合数取模(乘法逆元)
- lightoj 1067 - Combinations (组合数、乘法逆元)
- HDU5894分位置(组合数,lucas,乘法逆元)
- 【NOIP模拟考三】DP+组合数 day1 third 小球游戏
- IOS逆向--Safe mode
- 关于javac不是内部和外部命令原因
- 相关优质项目
- javascript高级程序设计第三版 第三章 基本概念
- hdu6114Chess(组合数取余,逆元)
- PHP魔术方法
- h5 监听 横竖屏 旋转
- 深入理解JVM之JVM内存区域与内存分配
- 彻底解决matplotlib中文乱码问题
- python时间转换器
- ATGM336H中科微三模北斗定位模组简介
- shiro功能架构分析
- c strlen & C++ strlen