乘法逆元
线性求逆元
#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 一些性质
Never say never.


浙公网安备 33010602011771号