乘法逆元

线性求逆元

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n, p, inv[3000005];
int main(){
    cin >> n >> p;
    inv[0] = inv[1] = 1;
    cout << 1 << "\n";
    for(int i = 2; i <= n; ++i){
        inv[i] = (p - (p / i)) * inv[p % i] % p;
        cout << inv[i] << "\n";
    }
    return 0;
}

https://www.cnblogs.com/bennettz/p/7697787.html

exgcd求逆元

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll x, y;
void exgcd(int a, int b){
    if(!b){
        x = 1;
        y = 0;
        return;
    }
    exgcd(b, a % b);
    int t = x;
    x = y;
    y = t - a / b * y;
}
int main(){
    int n, p;
    cin >> n >> p;
    for(int i = 1; i <= n; ++i){
        exgcd(i, p);
        cout << (x + p) % p << "\n";// i 模 p 意义下的乘法逆元
    }
}

 https://www.cnblogs.com/bennettz/p/7571446.html

void pre()  
{  
    fac[0] = 1;  
    for(int i = 1; i <= MAX; i++)  
        fac[i] = (fac[i - 1] * i) % MOD;  
    inv_fac[MAX] = qpow(fac[MAX], MOD - 2);  
    for(int i = MAX - 1; i >= 0; i--)  
        inv_fac[i] = (inv_fac[i + 1] * (i + 1)) % MOD;   
}
//阶乘逆元

https://baijiahao.baidu.com/s?id=1609032096408414934&wfr=spider&for=pc      一些性质

posted @ 2020-03-31 09:01  kojoker  阅读(137)  评论(0)    收藏  举报