乘法逆元(updating)

Posted beyondlimits

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了乘法逆元(updating)相关的知识,希望对你有一定的参考价值。

引子:

对于加法、减法、乘法,进行模运算,都满足交换律和结合律。

对于除法,当创造出了分数,取模则会出现一些意外情况。

由于分数,我们可以把除法转化成乘法的形式。

比如:

$\fracab$ $mod p = a*b^-1%p$

若$a*x = 1( mod b)$,$a,b$互质,则称$x$为$b$的逆元,记作$b^-1$。

求法1:费马小定理

根据费马小定理:若$a$,$p$互质,且$p$为质数,则有$a^p-1=1(mod p)$。

我们选取一个合法的$p$,则$x = a^p-2(mod p)$。

故可用快速幂处理。

#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
ll n,p;
ll qpow(ll a,ll b)
    ll ans=1;
    while(b)
        if(b&1) ans=(ll)(ans*a)%p;
        a=(ll)(a*a)%p;
        b>>=1;
    
    return ans%p;

int main()
    scanf("%lld %lld",&n,&p);
    for(int i=1;i<=n;i++)
        printf("%lld\n",qpow(i,p-2)%p);
    return 0;

 

以上是关于乘法逆元(updating)的主要内容,如果未能解决你的问题,请参考以下文章

乘法逆元怎么计算

乘法逆元(转)

乘法逆元

乘法逆元详解

「数论基础」 乘法逆元

数论--乘法逆元