水平有限,欢迎指点。
时间复杂度 O(logn)
首先 预处理出 logk 个数
处理出 logk 个值:
% p
% p
% p
将这些值组合为所求值 也可以 用一个例子来具体模拟计算 理解
例 =
即 =
int qmi(int a,int k,int p)
{
int res = 1;
while(k)
{
if(k & 1) res = (LL) res * a % p; // 可以进行手动计算模拟 来理解
n >>= 1;
a = (LL) a * a % p; // 每次预处理出的数
}
return res;
}
点赞随意 欢迎评论