数论——扩展欧几里得
2017-10-24 20:40
225 查看
作为一个刚学数论的蒟蒻,看扩欧还是费了半天时间的……
先发一下一道exgcd的题叭qwq 同余方程
一开始看是不会正解的,,,真的是一点也没法跟扩欧联系在一起qwq。然后又重新找各种博客、题解,终于能把这两个东西联系在一起,,,
先看一下扩欧的定义:
扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足贝祖等式: ax+by = gcd(a, b) =d(解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。
对于不定整数方程pa+qb=c,若 c mod gcd(p, q)=0,则该方程存在整数解,否则不存在整数解。
什么意思呢?举个例子。假设要求 ax ≡ 1 (mod b),a=3,b=10。
这里c=1,所以gcd(p,q)=1。则3*p+q*y=1。
顺便插一下百度百科给出的递推过程解释:
至于求a的逆元a^{-1}
由定义知道aa^{-1}\ mod\ M=1
那就是求方程ax+My=1的解啦,套扩展欧几里得就可以了。
其他用法反正就是用来解长成这样的方程…
具体代码如下
先发一下一道exgcd的题叭qwq 同余方程
一开始看是不会正解的,,,真的是一点也没法跟扩欧联系在一起qwq。然后又重新找各种博客、题解,终于能把这两个东西联系在一起,,,
先看一下扩欧的定义:
扩展欧几里德算法是用来在已知a, b求解一组x,y,使它们满足贝祖等式: ax+by = gcd(a, b) =d(解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。
对于不定整数方程pa+qb=c,若 c mod gcd(p, q)=0,则该方程存在整数解,否则不存在整数解。
什么意思呢?举个例子。假设要求 ax ≡ 1 (mod b),a=3,b=10。
这里c=1,所以gcd(p,q)=1。则3*p+q*y=1。
顺便插一下百度百科给出的递推过程解释:
至于求a的逆元a^{-1}
由定义知道aa^{-1}\ mod\ M=1
那就是求方程ax+My=1的解啦,套扩展欧几里得就可以了。
其他用法反正就是用来解长成这样的方程…
具体代码如下
#include<cstdio> #include<iostream> using namespace std; int a,b; int x,y,r,t; void exgcd(int a,int b) { if(b==0) { x=1,y=0; return; } exgcd(b,a%b); t=x; x=y; y=t-a/b*y; return; } int main() { cin>>a>>b; exgcd(a,b); cout<<(x+b)%b; return 0; }
相关文章推荐
- hdu 1576(数论之扩展欧几里得)
- POJ 2115 C Looooops [扩展欧几里得]【数论】[水]
- 数论继续学习4--扩展欧几里得
- 数论学习(2)——欧几里得与扩展欧几里得
- 菜鸡的初入数论(1)——欧几里得与扩展欧几里得小结
- ZOJ3609——数论基础 扩展欧几里得求解乘法逆元
- 数论基础(欧几里得,扩展欧几里得,逆元,斯特林)
- 数论学习之扩展欧几里得
- 初步数论-扩展欧几里得&线性同余方程
- 数论 - 用扩展欧几里得解模线性方程ax≡b (mod n) + 生理周期
- NOIP模拟赛 数论专题 扩展欧几里得 + 组合数 + 容斥原理
- 数论 —— 逆元(费马小定理/扩展欧几里得)
- POJ 1091 跳蚤 数论-容斥原理、扩展欧几里得
- 数论-hdu-1576-A/B-逆元-扩展欧几里得
- 【数论】【扩展欧几里得】Codeforces 710D Two Arithmetic Progressions
- 总结——数论:欧几里得算法&扩展欧几里得
- 欧几里得和扩展欧几里得讲解(基础数论)
- 基本数论入门(快速幂+扩展欧几里得)
- [NWPU][2014][TRN][21]数论入门 B - 扩展欧几里得 POJ 1061
- 【数论】【扩展欧几里得】Codeforces 710D Two Arithmetic Progressions