快速幂求逆元

作者: _NewMoon | 来源:发表于2019-10-14 23:06 被阅读0次

逆元的定义

若整数b,m互质,并且b|a,则存在一个整数x,使得a/b≡a∗x(mod m),则称x为b的模m乘法逆元,记为b−1(mod m)。

b存在乘法逆元的充要条件是b与模数m互质。否则,b不存在乘法逆元。当模数m为质数时,b^(m−2)即为b的乘法逆元。

如何求逆元

题目示例:Acwing876.快速幂求逆元https://www.acwing.com/problem/content/878/

代码:

//求逆元模板
#include <iostream>
#include <algorithm>
#include <cstdio>

using namespace std;

typedef long long LL;

int n,p;

//快速幂取余模板
LL qmi(int a,int k,int p)
{
    LL res = 1;
    while(k)
    {
        if(k&1) res = (LL)res*a%p;
        a = a*(LL)a%p;
        k>>=1;
    }
    return res;
}
int main()
{
    cin>>n;
    
    while(n--)
    {
        int a,p;
        scanf("%d%d",&a,&p);
        if(a%p)      
            printf("%d\n",qmi(a,p-2,p));
        else      //由费马小定理可知,如果a是p的倍数,则不存在
            puts("impossible");
    }
    
    return 0;
}

长风破浪会有时,直挂云帆济沧海

相关文章

  • 快速幂求逆元

    逆元的定义 若整数b,m互质,并且b|a,则存在一个整数x,使得a/b≡a∗x(mod m),则称x为b的模m乘法...

  • 【总结】逆元的求法

    所谓一个数 的逆元,就是一个 使 即 法一:快速幂(费马小定理)求逆元 由费马小定理得:那么将就可以将拆成,得...

  • [51Nod]1013 3的幂的和

    很有代表性的一道题,用到了快速幂和逆元 题干 求:3^0 + 3^1 +...+ 3^(N) mod 100000...

  • 快速幂

    常规求幂 快速求幂(一般) 快速求幂 (递归) 快速求幂(位运算) 快速求幂(位运算,更简洁)

  • 数论

    最大公约数 快速幂 逆元 模运算性质 (a+b) % p==(a % p + b % p) % p(a-b) % ...

  • 数学专题整理

    数学专题整理 学习清单 快速幂、矩阵、数论(逆元、容斥、素数筛、高斯消元)、FFT 归纳整理 GCD与LCM GC...

  • 求逆元

  • 资格赛 A题

    画图说话: 分析:9937 为质数,费马小定理+逆元,除法变乘法,快速幂取余 费马小定理 公式推导:(b/a)mo...

  • 模板 | 整数快速幂 & 快速幂取模

    快速幂: 所谓的快速幂,其目的是为了快速求幂,将时间复杂度从朴素算法的降到。 假如现在要求 ,按照朴素算法,就是将...

  • 求幂、快速幂运算

    对一个给定的数计算乘幂。这一过程的参数是一个基数b和一个正整数的指数n,过程计算出b ^ n。一种方式是通过下面这...

网友评论

    本文标题:快速幂求逆元

    本文链接:https://www.haomeiwen.com/subject/pbudmctx.html