乘法逆元+扩展欧几里得+Lucas
来源:互联网 发布:搜索算法工程师 编辑:程序博客网 时间:2024/05/18 16:36
代码:
void e_gcd(LL a, LL b, LL &x, LL &y){ if(b == 0) { x = 1; y = 0; return ; } e_gcd(b, a % b, x, y); int tm = x; x = y; y = tm - a / b * y;}LL lucas(int n, int m, int p){ LL ans = 1; while(m && n && ans) { ans = (ans * c_mn(n % p, m % p, p)) % p; m /= p; n /= p; } return ans;}LL c_mn(LL a, LL b, LL p){ if(a < b) return 0; if(a == b) return 1; if(b > a - b) b = a - b; LL ca, cb; ca = cb = 1; for(LL i = 0; i < b; i++) { ca = (ca * (a - i)) % p; cb = (cb * (b - i)) % p; } LL x, y; e_gcd(cb, p, x, y); x = ((x % p) + p) % p; LL ans = (ca * x) % p; return ans;}
阅读全文
0 0
- 乘法逆元+扩展欧几里得+Lucas
- 乘法逆元(扩展欧几里得)
- csu1163扩展欧几里得之乘法逆元
- 乘法逆元与扩展欧几里得
- 乘法逆元的扩展欧几里得解法
- 扩展欧几里得(乘法逆元)
- 扩展欧几里得求乘法逆元
- 扩展欧几里得算法求乘法逆元
- 扩展欧几里得求乘法逆元
- 扩展欧几里得 与 乘法逆元
- 【专题】欧几里得算法、扩展欧几里得、乘法逆元
- 乘法逆元 (扩展欧几里得或费马小定理)
- 乘法逆元 (扩展欧几里得或费马小定理)
- hdoj 1576 A/B 【扩展欧几里得 求乘法逆元】
- [NOIP 2011]计算系数 乘法逆元+扩展欧几里得
- 51nod--1256 乘法逆元 (扩展欧几里得)
- 51nod 125乘法逆元 (扩展欧几里得)
- 青蛙的约会----扩展欧几里得+乘法逆元
- Android Zygote启动流程源码解析
- web实现进入指定目录
- Android 如何解决Android的库自定义属性和生成过程中的包名重映射?
- java.lang.AbstractMethodError: org.apache.bval.jsr303.ConfigurationImpl.getDefaultParameterName....
- JAVA连接Redis错误提示(一)
- 乘法逆元+扩展欧几里得+Lucas
- ActiveMQ入门教程
- nltk词性标注英文简称及分类
- Servlet和Filter的共同点和区别
- 2017.08.16【NOIP 普及组】模拟赛C组总结
- PLSQL 有效序列号
- Faster R-CNN 深入理解 && 改进方法汇总
- MySQ数据库中的基础语句
- 1.1.2列表应用