中国剩余定理 [mi不互质]
来源:互联网 发布:网络教育 学籍 编辑:程序博客网 时间:2024/06/05 08:30
假设有如下方程:
合并可得:
然后利用扩展欧几里得算法, 算出x1的最小正整数解, 代入原方程即可得y的值, 然后求出最终答案
struct P { ll as, lc; ///as为ai, lc为最小公倍数 P() {} P(ll as, ll lc) : as(as), lc(lc) {} }; ll exgcd(ll a, ll b, ll &x, ll &y) { if(b == 0) { x = 1; y = 0; return a; } ll ans = exgcd(b, a % b, x, y); ll t = x; x = y; y = t - a / b * y; return ans; } ll inv(ll t, ll p) { ll d, x, y; d = exgcd(t, p, x, y); return (x % p + p) % p;}P Merge(P gg, P rr) { if(gg.as == -1 || rr.as == -1) return P(-1, -1); ll a1 = gg.as, b1 = gg.lc; ll a2 = rr.as, b2 = rr.lc; ll kx, ky; ll g = exgcd(b1, b2, kx, ky); if((a2 - a1) % g) return P(-1, -1); ll p = ((a2 - a1) % b2 + b2) % b2; p /= g; p *= inv(b1 / g, b2 / g); p %= b2; p *= b1; p += a1; ll b3 = b1 / g * b2; ll a3 = (p % b3 + b3) % b3; return P(a3, b3);}ll CRT(ll *a, ll *m, int n) { P g(a[1], m[1]); for(int i = 1; i < n; i++) { g = Merge(g, P(a[i], m[i])); if(g.as == -1) return g; } return g;}
阅读全文
0 0
- 中国剩余定理 [mi不互质]
- 中国剩余定理 不互质
- 中国剩余定理不互质
- 中国剩余定理--不互质情况
- 非互质中国剩余定理求线形模方程组(形如 X%mi=ai)
- 中国剩余定理模版【中国剩余定理】
- HDU3579中国剩余定理(不互质的情况)
- 中国剩余定理(互质、不互质)
- 中国剩余定理(除数不互质)
- HDU 1573 中国剩余定理 + 不互质
- 不互质的中国剩余定理-HDU1573
- 中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 中国剩余定理
- 简易五子棋,供参考
- JSON 数据解析时遇到ValueError: No JSON object could be decoded
- 数据库的设计(E-R图,数据库模型图,三大范式)
- POJ 2065 SETI(高斯消元)
- VS2010 教程:创建一个 WPF 应用程序 (第一节)
- 中国剩余定理 [mi不互质]
- ios UICollectionViewCell个数小于等于3,顺序错位
- Numpy 布尔索引
- SpringCloud分布式开发五大神兽
- gcc与__cplusplus宏
- 方法的覆盖(重写)
- "大数据如何帮助小数据?" 主题报告速记与评述(二)
- 常见的eclipse的一些快捷键
- 安装CUDA流程