线性模方程求解
2016-09-18 13:20
369 查看
对于一些数论专题总是有些晕,还是要多做题(O_O)
所谓线性模方程,就是形如ax≡b(modn) (a,x,b,n∈Z∗)的方程。。
已知a,b,需要求解最小的x值。
方法如下:
原方程等价于ax−ny=b,令d=gcd(a,n)。
如果bmodd≠0,则方程无解,因为左边是d的倍数,而右边不是。
如果<
c234
span class="mi" id="MathJax-Span-12395" style="font-family: MathJax_Math-italic;">bmodd=0,则先使用扩展欧几里得算法求出方程ax′+ny′=d的一组解,然后原方程的解x=(x′×(b÷d))modn,这里略去证明。
代码如下:
就是这么简单(^__^)!
所谓线性模方程,就是形如ax≡b(modn) (a,x,b,n∈Z∗)的方程。。
已知a,b,需要求解最小的x值。
方法如下:
原方程等价于ax−ny=b,令d=gcd(a,n)。
如果bmodd≠0,则方程无解,因为左边是d的倍数,而右边不是。
如果<
c234
span class="mi" id="MathJax-Span-12395" style="font-family: MathJax_Math-italic;">bmodd=0,则先使用扩展欧几里得算法求出方程ax′+ny′=d的一组解,然后原方程的解x=(x′×(b÷d))modn,这里略去证明。
代码如下:
long long exgcd(long long a, long long b, long long &x, long long &y){ if(!b) { x = 1; y = 0; return a; } long long g = exgcd(b, a%b, y, x); y -= (a/b)*x; return g; } bool liner_mode_equition(long long a, long long &x, long long b, long long n) { long long x_, y_, d = exgcd(a, n, x_, y_); if(b % d != 0) return false; x = (x_ * (b / d)) % n; return true; }
就是这么简单(^__^)!
相关文章推荐
- POJ 2115 简单的模线性方程求解
- MATLAB实例之对线性,非线性,超越方程的求解
- 算法导论-----数论-----求解模线性方程
- [数值计算]1,线性方程的三角分解法求解
- POJ2115——C Looooops(扩展欧几里德+求解模线性方程)
- POJ2115 扩展欧几里德算法求解模线性方程
- hdu 1576 求解模线性方程
- POJ - 2115 C Looooops(扩展欧几里德求解模线性方程(线性同余方程))
- 求解模线性方程
- Java实现算法导论中求解模线性方程解(基于最大公约数欧几里得扩展算法)
- 关于正规方程求解线性回规问题中的最终的值θ
- POJ 2115 C Looooops(扩展欧几里德 + 求解模线性方程)
- 推广的欧几里得算法--对于求解 线性模方程 有用
- 【求解模线性方程】
- 同余方程(线性模方程)求解青蛙约会问题
- [ACM] POJ 2115 C Looooops (扩展欧几里得求解模线性方程)
- 线性方程求解之 二范数类型
- POJ 2142 TheBalance 模线性方程求解
- 线性规划、梯度下降、正规方程组——斯坦福ML公开课笔记1-2
- 分治法求解方程的解