zoukankan      html  css  js  c++  java
  • 乘法逆元(updating)

    引子:

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

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

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

    比如:

    $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
    ",qpow(i,p-2)%p);
        return 0;
    }

     优化:设$i$的阶乘为$inv[i]$。经过观察,我们发现对于任意$i,j$,$inv[i*j]=(inv[i]*inv[j])mod p$,故可以利用这个性质,把它当积性函数来筛出来,这样就可以优化时间。

  • 相关阅读:
    Android studio中Terminal中使用git(Windows环境)
    快速将JSON转换为bean
    生成apk文件
    Intent显式和隐式使用
    碎片
    ListView的基本用法
    浅谈JSONObject,GSON解析JSON
    浅谈SAX,PULL解析XML
    iOS源代码管理工具
    详解tintColor属性
  • 原文地址:https://www.cnblogs.com/BeyondLimits/p/11166126.html
Copyright © 2011-2022 走看看