扩展欧几里得的学习(未完成
来源:互联网 发布:15个java小项目 文库 编辑:程序博客网 时间:2024/06/10 12:44
ll exgcd(ll a,ll b,ll &x,ll &y){if(b==0){x=1;y=0;return a;}ll r=exgcd(b,a%b,x,y);ll t=y;y=x-(a/b)*y;x=t;return r;}
证明见此图:
到时候可以临时推出代码
上述代码可以求出ax+by=gcd(a,b)的一组解
当求ax+by=c时同理,先求ax+by=gcd(a,b),在判断c是否整除gcd(a,b),如果整除就把x,y乘上倍数,否则无解。
求ax=b(mod L)时,原方程可以整理成ax+Ly=b,套用模板,解出ax+Ly=gcd(a,L),判断是否有解,有解就答案乘以倍数,就可以得到一组解
如果想要最小非负数解,再对x进行如下操作
int t=(L/gcd(a,L);
x=((x%t)+t)%t;
证明:
设ax1+by1=ax2+by2;
移项得 a(x1-x2)=b(y2-y1);
设t=gcd(a,b)
两边同时除以t得
a`(x1-x2)=b`(y2-y1)
注意到此时a`,b`互质
所以(y2-y1)为a`的整数倍
设(y2-y1)=a`k
得(x1-x2)=b`k
而b`=b/gcd(a,b);
x的解集为{x|x=特解+k*(b/gcd(a,b))};
所以
int t=L/(gcd(L,a));
x=(x%t+t)%t就是最小非负解啦~
就是这样,喵~
2 0
- 扩展欧几里得的学习(未完成
- 扩展欧几里得的学习
- 扩展欧几里得算法的学习
- 欧几里得、扩展的欧几里得算法
- 欧几里得、扩展的欧几里得算法 .
- 扩展欧几里得学习
- 扩展欧几里得学习总结
- 扩展的欧几里得算法
- 扩展的欧几里得算法
- 扩展的欧几里得算法
- 扩展的欧几里得
- 扩展的欧几里得算法
- 扩展的欧几里得模板
- 扩展的欧几里得算法
- 扩展欧几里得的应用
- Romantic 欧几里得的扩展
- 【算法学习】扩展欧几里得算法
- 数论学习之扩展欧几里得
- 六度空间 地下迷宫探索 哈利·波特的考试 旅游规划 畅通工程之最低成本建设问题
- 欢迎使用CSDN-markdown编辑器
- <Android Framework 之路>BootAnimation(1)
- Android学习之Activity与Service进行通信的三种方式
- android_蓝牙模块的开发
- 扩展欧几里得的学习(未完成
- java代码动态修改app图标
- Java中重写equals函数加判断自己定义的对象相不相等
- Oracle 大数据集成实施
- JS强制类型转换
- Python3.4中filter函数,map函数和reduce函数
- HDU 1242 - Rescue(BFS+优先队列)
- BestCoder Round #86题解报告
- 51nod-1714 B君的游戏