求逆元问题是数论中一类比较基础的题目,它常常会与组合数,质数等联系起来。今天我们就来总结一下求逆元的方法,根据数据范围不同有三种,接下来就一一介绍。

-------------------------------------------------------------------------------

方法1.通过扩展欧几里得算法求逆元

这个算法很常见,在这里就不再累述,直接给出代码。

    1. 求解ax+by=gcd(a,b),亦即ax≡1(mod b)。函数返回值是a,b的最大公约数,而x即a的逆元。 
    2. 注意a, b不能写反了。
    3. gcd(a, b) > 1时逆不存在
 1 int ex_gcd(int a, int b, int &x, int &y) {
 2     int ret, tmp;
 3     if (b == 0) {
 4         x = 1;
 5         y = 0;
 6         return a;
 7     }
 8     ret = ex_gcd(b, a % b, x, y);
 9     tmp = x;
10     x = y;
11     y = tmp - a / b * y;
12     return ret;
13 }
View Code

相关文章: