解线性同余方程组-模板
2016-06-01 22:59
183 查看
int n; LL a[K],b[K]; LL gcd(LL a,LL b) { return b==0?a:gcd(b,a%b); } void exgcd(LL a,LL b,LL &d,LL &x,LL &y) { if(b==0) { x=1;y=0;d=a; return; } exgcd(b,a%b,d,y,x); y-=x*(a/b); } LL slove(void)//x=b[i](mod a[i]) { LL ta=a[0],tb=b[0]; bool flag=true; for(int i=1;i<n;i++) { LL xa=ta,xb=a[i],c=b[i]-tb,d,x,y; exgcd(xa,xb,d,x,y); if(c%d) { flag=false;break; } LL tm=xb/d; x=(x*(c/d)%tm+tm)%tm; tb=ta*x+tb; ta=ta/d*a[i]; } if(!flag) return -1; return tb; }
解出的是最小正整数解
相关文章推荐
- Android属性动画AnimatorSet源码简单分析
- Objective-C中的浅拷贝和深拷贝
- OC KVC
- 开源的一些基础介绍
- 浮点数计算(Floating-point arithmetic)
- php 数组操作(jcxn实践)
- JavaScript中函数的定义方式
- Android 创建第一个jni文件
- (Tomcat)服务器之web应用的虚拟目录映射和主机搭建
- Canvas之基本形状操作
- (Tomcat)服务器之web应用的虚拟目录映射和主机搭建
- IR的设计
- java基础1
- 数据库集群
- scala学习之偏函数与闭包
- zookeeper原理
- 提高情商的好书推荐 (程序猿不仅要智商也要情商)
- Java 开发工具之Myeclipse快捷键
- JavaScript中的块级作用域、私有变量与模块模式
- 分治