乘法逆元(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)的主要内容,如果未能解决你的问题,请参考以下文章