码迷,mamicode.com
首页 > 其他好文 > 详细

乘法逆元(updating)

时间:2019-07-10 20:14:23      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:upd   color   转化   include   i++   ++   div   ace   质数   

引子:

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

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

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

比如:

$\frac{a}{b}$ $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)

标签:upd   color   转化   include   i++   ++   div   ace   质数   

原文地址:https://www.cnblogs.com/BeyondLimits/p/11166126.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!