【算法笔记】acm数学基础
来源:互联网 发布:mysql无法创建用户 编辑:程序博客网 时间:2024/06/05 07:54
// gcd拓展 an + bm = gcd(a, b)int ext_gcd(int &a, int n, int &b, int m){ if (m == 0) { a = 1; b = 0; return n; } int d = ex_gcd(b, m, a, n%m); b -= n / m * a; return d;}
模运算
// 利用用裴蜀恒等式求逆元// a = 1(mod p) -> ax + py = 1// 逆元不存在返回-1 getInverse(LL a, LL p) { LL d, x, y; d = ext_gcd(x, a, y, p); if (d == 1) return -1; return x < 0 ? x+p : x;}
// 快速幂取模 javapublic long fast_pow_mod(long x, int n) { long ret = 1; while (n > 0) { if ( (n&1) != 0 ) ret = ret * x % Mod; n >>= 1; x = x * x % Mod; } return ret; }
// a = 1 (mod P),当P为素数时,利用费马小定理求逆元int inv = fast_pow_mod(a, P-2);
///////// 组合数 ////////////
求解
如果n较小,n <=5000,直接利用帕斯卡三角形打表。
利用等式
// 求解C(n, k)k = min (k, n-k); // 取计算量较少的一边long ans = 1; // C(n-k, 0)long long x = 1, y = 1;long xs = 1, xt = k;long ys = n-k+1, yt = n;// (n-k+1)/1 * (n-k+2)/2 * ... * n/kfor (long i = xs;i <= xt;++ i) x = x * i % Mod;for (long i = ys;i <= yt;++ i) y = y * i % Mod;ans = y * fast_pow_mod (x, Mod-2) % Mod;
0 0
- 【算法笔记】acm数学基础
- 算法设计和复杂性理论学习笔记_2(数学基础)
- 算法数学基础
- 基础数学算法
- 算法数学基础
- DirectX笔记 数学基础
- ACM学习_数学基础之数论
- ACM/ICPC要求的基础数学知识点
- ACM算法比赛笔记
- ACM经典算法之数学问题模板
- 欧几里德算法及其简单应用----<acm数学>
- ACM学习笔记之 数学问题----素数
- 数学基础一(Euclid算法)
- 算法分析的数学基础
- RSA算法及数学基础
- RSA算法以及数学基础
- 《遗传算法的数学基础》阅读笔记 (1)_遗传算法的基本性质。
- 《遗传算法的数学基础》阅读笔记 (2)_遗传机制和遗传算法。
- 浏览器切换标签js定时器会变缓慢解决办法
- SAT改革:SAT官方最新样题解读与备考建议
- 【STL源码剖析读书笔记】【第7章】仿函数
- sdfs
- 802.3af与802.3at区别及PSE与PD名词解释
- 【算法笔记】acm数学基础
- Rabbitmq源码示例(生产者/消费者,非持久化/持久化)
- listview的item中不同的点击按钮触发不同的点击事件
- modbus
- Load-sharing vs Load-balancing
- android(10) 左侧菜单栏
- 【转载】2015必须推荐的Android框架,猿必读系列!
- OpenGL ES 2.0渲染管线
- leetcode 日经贴,Cpp code -The Skyline Problem