一元线性同余方程组
2013-09-04 20:06
155 查看
定义
由若干个一元线性同余方程组构成的方程组,叫做一元线同余方程组。求解
我们可以将其统一划成a*x ≡ b(mod m)的形式,这样有利于算法的实现。既然是对同余方程组求解,那么必然得先会对同余方程求解,如果对同余方程求解仍有疑问,可以参考:/article/7138419.html
对于同于方程组的求解,其实质过程就是对于其中的同余方程依次进行两两合并,然后对最终合并的最终同余方程进行求解即可(如果在合并的过程中发现无解则不需要再隽星合并,因为此时该方程组已经无解)。先给出同余方程合并的推到过程,如图所示:
核心代码
long long RemainderEquationS(long long* a,long long* m,int k) { //数组a存储余数 //数组m存储除数 //k表示数组大小 long long a1,a2,m1,m2,d; long long x,y; long long t,c; int flag; a1 = a[0]; m1 = m[0]; flag = 1; for(int i = 0 ; i < k; i++) { a2 = a[i]; m2 = m[i]; c = a2 - a1; ExtendedEuclid(m1,m2,d,x,y); if(c % d) { flag = 0; break; } t = m2 / d; x = (x * c / d %t + t) % t;//确保x为最小正数 a1 = a1 + m1 * x; m1 = m1 / d * m2; } if(flag) return a1; else return -1; }
其中的 x 就是上面推到过程中的 K。
参考资料:
http://yzmduncan.iteye.com/blog/1323599/
相关文章推荐
- POJ2891 Strange Way to Express Integers【一元线性同余方程组】
- HDU1573 X问题【一元线性同余方程组】
- 解一元线性同余方程组
- POJ 2891 Strange Way to Express Integers 解一元线性同余方程组
- POJ2891 Strange Way to Express Integers 一元线性同余方程组
- HDU1573 一元线性同余方程组
- 同余问题(3)一元线性同余方程组
- hdu 1930 And Now, a Remainder from Our Sponsor 扩展欧几里得 解一元线性同余方程组
- HDU 1573 X问题 [一元线性同余方程组]【数论】
- 解一元线性同余方程组模板
- HDU1573 X问题【一元线性同余方程组】
- 一元线性同余方程组【数论
- poj 2891 Strange Way to Express Integers 一元线性同余方程组
- HDU3579 Hello Kiki【一元线性同余方程组】
- hdu 1573 X问题 水题 一元线性同余方程组
- 把一元人民币换成5分,2分,1分的硬币,共有多少种换法?
- LCC编译器的源程序分析(23)一元运算表达式
- c实现一元多项式加乘
- 求一元二次方程a*x*x+b*x+c=0的3个根
- 线性表(一元多项式)