a^b 带取膜

年后第一题。

没什么好说的, 这题的全部代码以后就是函数一样的存在。

#include<bits/stdc++.h>
using namespace std;

long long qpow(long long a, long long b, long long p)
{
    
    long long res = 1;
    for( ;b; b >>= 1, a = (a*a) % p)
        if(b&1) res = (res * a) % p;
    return res % p;
    
    //注意这个函数的理论基础
    // 1. 二进制分解, 速度基础
    // 2. 取膜下乘法加法的相关性质, 正确性基础
}

int main()
{
    
    long long a, b, p;
    cin >> a >> b >> p;
    cout << qpow(a, b, p) ;
    return 0;
    
}
posted @ 2020-01-28 14:36  xwmwr  阅读(117)  评论(0编辑  收藏  举报