标签:get inline targe mat res 复杂 clu class 快速幂
求 \(a^k\ mod\ p\)
时间复杂度:O(\(\log\)k)
https://www.luogu.com.cn/problem/P1226
题意:求 \(a^k \ mod \ p\)
#include <cstdio>
#include <iostream>
using namespace std;
typedef long long LL;
const char nl = ‘\n‘;
//const int N =
LL qmi(int a, int k, int p){
LL res = 1;
while (k){
if (k & 1) res = (LL)res * a % p;
k >>= 1;
a = (LL)a * a % p;
}
return res;
}
int main(){
ios::sync_with_stdio(false);
// cin.tie(nullptr);
int a, k, p;
while (cin >> a >> k >> p){
cout << a << ‘^‘ << k << " mod " << p << "=" << qmi(a, k, p) % p << nl; // 1^0 mod 1=0
}
return 0;
}
若 a 和 p 互质,求逆元\(b^{-1}\),满足 \(\frac{a}{b} \equiv a \cdot b^{-1} \pmod {p}\) 。
两边同时乘以 b,得 \(a \equiv a \cdot b \cdot b^{-1} \pmod {p}\)
\(\because\) a 和 p互质
\(\therefore\) 两边同时约去 a,得 \(b \cdot b^{-1} \equiv 1 \pmod {p}\)
由费马小定理 \({a}^{p-1} \equiv 1\pmod {p}\),可得 \(b^{-1}\) 为 \(b^{p-2} \pmod {p}\)。
要求:p 一定是质数,b 不是 p 的倍数。
标签:get inline targe mat res 复杂 clu class 快速幂
原文地址:https://www.cnblogs.com/xiaoran991/p/14401380.html