码迷,mamicode.com
首页 > 其他好文 > 详细

快速幂(应用:快速幂求逆元)

时间:2021-02-17 14:14:44      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:get   inline   targe   mat   res   复杂   clu   class   快速幂   

快速幂

(1)快速幂

\(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;
}

(2)快速幂求逆元

若 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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!