中国剩余定理(互质、不互质)
来源:互联网 发布:吉利知豆质量怎么样 编辑:程序博客网 时间:2024/06/16 14:42
中国剩余定理
输入a,m 第i个方程表示为x ≡ ai(mod mi),求x。
两两互质:
const int maxn = 20;ll a[maxn], m[maxn], n;ll CRT(ll a[], ll m[], int n) { ll M = 1; for (int i = 0; i < n; i++) M *= m[i]; ll ret = 0; for (int i = 0; i < n; i++) { ll x, y; ll tm = M / m[i]; extend_gcd(tm, m[i], x, y); ret = (ret + tm * x * a[i]) % M; } return (ret + M) % M;}
POJ:2891 两两不互质
当两两不互质时,不能够用上述方法求,但可以通过将两个方程合并成一个方程的形式。
具体证明:http://yzmduncan.iteye.com/blog/1323599/
const int maxn = 1000;ll a[maxn], m[maxn], n;ll CRT(ll a[], ll m[], int n) { if (n == 1) { if (m[0] > a[0]) return a[0]; else return -1; } ll x, y, d; for (int i = 1; i < n; i++) { if (m[i] <= a[i]) return -1; d = extend_gcd(m[0], m[i], x, y); if ((a[i] - a[0]) % d != 0) return -1; ll t = m[i] / d; x = ((a[i] - a[0]) / d * x % t + t) % t; a[0] = x * m[0] + a[0]; m[0] = m[0] * m[i] / d; a[0] = (a[0] % m[0] + m[0]) % m[0]; } return a[0];}
0 0
- 中国剩余定理(互质、不互质)
- 中国剩余定理 不互质
- 中国剩余定理不互质
- 中国剩余定理(互质+非互质)
- 中国剩余定理CRT (互质)
- 中国剩余定理(除数不互质)
- hdu-1370(中国剩余定理余数互质)&&hdu-1573(中国剩余定理余数不互质)
- 中国剩余定理 [mi不互质]
- 中国剩余定理--不互质情况
- 中国剩余定理(转)
- 中国剩余定理(韩信点兵)
- poj2891(中国剩余定理)
- POJ_1006_Biorhythms(中国剩余定理)
- 中国剩余定理(续)
- HDU1370(中国剩余定理)
- 中国剩余定理(转载)
- 中国剩余定理(笔记)
- 中国剩余定理(模板)
- HDU2828--Lamp(Dancing Links)
- URL中含有汉字怎么办
- POJ1182:食物链
- Linux下的hrtimer高精度定时器
- 四种变量交换swap方法
- 中国剩余定理(互质、不互质)
- 机器学习领域的领军人物
- 【2014 Multi-University Training Contest 3 1002】/【HDU 4888】 Redraw Beautiful Drawings
- Android listView 中响应Button点击事件
- APUE——进程环境
- XCode环境变量及路径设置
- Fedora 20 上关闭防火墙的方法
- opencv绘图调用总结
- Matlab uigetfile( ) & iscell() 函数的使用